Question

Après avoir suivi un tutoriel trouvé. Im maintenant le refaire à nouveau, sans la partie d'échafaudage, d'apprendre mieux.

Cependant, la modification de 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, j'ai couru rake db:create, défini une classe de migration et couru rake db:migrate, tout sans problème.

Ainsi, la base de données doit contenir une table de messages. Mais cette commande ne peut pas link_to semblent trouver posts_path. Cette variable (ou est-ce même 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?

Était-ce utile?

La solution

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

Autres conseils

Les méthodes de _PATH sont générées dynamiquement en général. La méthode manque erreur vient quand il n'y a pas une route vers l'objet spécifié ou dans ce cas la méthode que vous appelez explicitement.

Définir une route 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

<% = link_to "mon blog", posts_path>

Si c'est exactement ce que votre erb contenu, il manque le signe pour cent à la fin de l'élément de scriptlet. Je ne sais pas si cela a causé votre problème, ou je suis peut-être prendre les choses trop à la lettre ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top