Ruby sur la syntaxe des rails
-
23-08-2019 - |
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
?
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 ....