2009-02-13 9 views
9

Après avoir suivi un tutorial Ive trouvé. Je suis maintenant en train de le refaire, sans la partie échafaudage, pour mieux l'apprendre.Rubis sur les rails link_to syntax

Cependant, éditer mon application \ \ vues \ home \ index.html.erb contenir:

<h1>Rails test project</h1> 
<%= link_to "my blog", posts_path> 

Je reçois une erreur:

undefined local variable or method `posts_path' for #<ActionView::Base:0x4e1d954> 

Avant que je l'ai fait, je courais rake db:create , défini une classe de migration et exécuté rake db:migrate, tout sans problème. La base de données doit donc contenir une table posts. Mais cette commande link_to ne peut pas sembler trouver posts_path. Cette variable (ou même une fonction?) Est probablement définie par la routine d'échafaudage.

Ma question est maintenant; comment puis-je faire moi-même manuellement, définir posts_path?

Répondre

21

Vous devez définir un chemin d'accès à vos messages config/routes.rb

Rails syntaxe 2.x:

map.resources :posts 

Rails syntaxe 3.x:

resources :posts 
+0

Works. Comparé le fichier routes.rb dans le projet qui a utilisé l'échafaudage et l'actuel. Et cette ligne était la seule chose qui manquait. Après l'avoir ajouté, la page d'index fonctionne comme prévu. – Mizipzor

5

Les méthodes sont _PATH généré dynamiquement de manière typique. La méthode manquant erreur se produit lorsqu'il n'y a pas de route vers l'objet spécifié ou dans ce cas la méthode que vous appelez explicitement.

La définition d'un itinéraire devrait résoudre ce problème. HermanD ci-dessus a montré une façon de le faire.

Vous pouvez exécuter « itinéraires de râteau » de la racine de votre application Rails pour voir tous les itinéraires configurés

5

<% = link_to « mon blog », posts_path>

Si cela est exactement ce que contient votre erb, il manque le signe de pourcentage à la fin de l'élément scriptlet. Je ne sais pas si cela a causé votre problème, ou peut-être que je prends les choses trop littéralement ....

Questions connexes