'ActionView :: Template :: Error - 没有路由匹配'传递'link_to'语句的“旧样式”参数

时间:2011-07-29 18:11:07

标签: ruby-on-rails ruby ruby-on-rails-3 controller link-to

我正在使用Ruby on Rails 3.0.9,我遇到了这个问题:Trouble on setting the ':controller' parameter for a 'link_to' statement。没有人用解决方案回答但是,尝试并重新尝试找到并解决问题,我发现在传递“旧式”参数时(即使用controlleraction选项而不是命名路由路径)有时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} })。可能是路由器问题吗?

1 个答案:

答案 0 :(得分:1)

当routes.rb文件中没有提到正确的路由时,通常会出现“无路由错误”。它与绝对/相对路径无关。