Я использую Ruby on Rails 3.0.9, и у меня возникла эта проблема: Проблема при установке параметра ': controller' для оператора 'link_to' . Никто не ответил решением, но, пытаясь и снова пытаясь найти и решить проблему, я обнаружил, что при передаче параметров «старого стиля» (то есть с использованием параметров controller
и action
вместо именованных путей маршрута) иногда link_to
не работает должным образом (то есть вы получаете ошибку ActionView::Template::Error - No route matches
, хотя, если у вас есть контроллер и правильно заданные маршруты). В любом случае вы можете установить для этого что-то вроде следующего:
<%= link_to("New article", {:controller => '../', :action => 'new'}) %> # Note the "'../'"
и это работает.
Я хотел бы знать , когда и , почему , в общем, бывает: опция controller
кажется "вынужденной" ссылаться на относительный или абсолютный путь, а не на параметр контроллера, который вы передали.
То есть, если я установил :controller => articles
и использую приведенный выше код в файле представления, управляемом controllers/article/categories_controller.rb
, я получаю следующую ошибку:
`ActionView::Template::Error (No route matches {:controller=>"articles/categories/articles", :action=>"new"})`
потому что, как сказано выше, контроллер, кажется, ссылается на путь /articles/categories
вместо пути /articles
(как и должно быть, поскольку в этом примере я установил контроллер на articles
). Может быть это проблема роутера?