我正在使用Ruby on Rails 3.0.9,我遇到了这个问题:Trouble on setting the ':controller' parameter for a 'link_to' statement。没有人用解决方案回答但是,尝试并重新尝试找到并解决问题,我发现在传递“旧式”参数时(即使用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
路径(因为它应该是,因为在这个例子中,我将控制器设置为{{1} })。可能是路由器问题吗?
答案 0 :(得分:1)
当routes.rb文件中没有提到正确的路由时,通常会出现“无路由错误”。它与绝对/相对路径无关。