2011-07-29 2 views
3

J'utilise Ruby on Rails 3.0.9 et j'ai eu ce problème: Trouble on setting the ':controller' parameter for a 'link_to' statement. Personne n'a répondu avec une solution, mais en essayant et en essayant de trouver et de résoudre le problème, j'ai trouvé qu'en passant des paramètres "old style" (utilisant les options controller et action au lieu des chemins d'accès nommés) parfois link_to ne fonctionne pas comme prévu (c'est-à-dire, vous obtenez une erreur ActionView::Template::Error - No route matches bien que si vous avez le contrôleur et les itinéraires correctement indiqués). De toute façon, vous pouvez définir pour cela quelque chose comme le suivant:'ActionView :: Template :: Error - Aucune route ne correspond à la transmission des paramètres "old style" pour une instruction' link_to '

<%= link_to("New article", {:controller => '../', :action => 'new'}) %> # Note the "'../'" 

et cela fonctionne.

Je voudrais savoir quand et pourquoi, en général, il se produit: l'option controller semble « forcé » pour désigner le chemin absolu ou relatif et non au paramètre du contrôleur que vous avez passé dans

.

C'est, si je mets :controller => articles et j'utilise le code ci-dessus dans un fichier de vue géré par le controllers/article/categories_controller.rb je reçois l'erreur suivante:

`ActionView::Template::Error (No route matches {:controller=>"articles/categories/articles", :action=>"new"})` 

parce que, comme dit ci-dessus, le contrôleur semble se référer à le chemin /articles/categories au lieu du chemin /articles (comme il se doit puisque, dans cet exemple, j'ai réglé le contrôleur à articles). Peut-être un problème de routeur?

Répondre

1

L'erreur "aucune route" se produit généralement lorsqu'il n'y a pas d'itinéraire correct mentionné dans le fichier routes.rb. Cela n'a rien à voir avec le chemin absolu/relatif.

Questions connexes