在rails 3.0之前,向控制器添加新操作非常简单。
您只需向控制器类(称为mycontroller)添加新方法foobar
。
在该控制器的views文件夹中添加html文件foobar.html.erb
然后,如果您将浏览器指向.../mycontroller/foobar
一切正常。
但是,在rails 3.0中,当我添加如上所述的新动作时,我收到以下错误:
没有路线匹配“/ mycontroller / foobar”
rails 3.0有什么变化?我做错了什么?
答案 0 :(得分:19)
将此添加到routes.rb
:
get 'mycontroller/foobar'
这会使用HTTP GET将网址http://mysite.com/foobar
路由到foobar
操作。
更多信息:
请注意,在控制器中定义def foobar
并不是严格要求(除非您需要在显示视图之前在foobar
中执行某些操作) - 但视图必须存在。换句话说,即使控制器中不存在def foobar
方法,仍会呈现视图foobar.html.erb
。
此外,如果您还不知道,可以使用rake routes
列出您应用知道的所有路线。因此,如果rake routes
的输出未列出到某个控制器/操作的路由,则会发生“无路由匹配”错误。
答案 1 :(得分:0)
错误说明了一切。您的config / routes.rb中没有相应的路由。检查默认路由是否已注释掉。如果是这样,您需要为新操作添加路线。
答案 2 :(得分:0)
这个问题在上周被修改过了。你会在这里找到你需要的东西 Rails app doesn't see my views