Rails 3.0:向控制器添加新操作

ARI*_*ARI 10 routes ruby-on-rails-3

在rails 3.0之前,向控制器添加新操作很容易.

您只需foobar向控制器类(称为mycontroller)添加一个新方法.在该控制器的views文件夹中添加一个html文件,foobar.html.erb

然后,如果您将浏览器指向.../mycontroller/foobar一切正常的工作.

但是,在rails 3.0中,当我添加如上所述的新操作时,我收到以下错误:

没有路线匹配"/ mycontroller/foobar"

rails 3.0有什么变化?我究竟做错了什么?

Zab*_*bba 19

将此添加到routes.rb:

get 'mycontroller/foobar'
Run Code Online (Sandbox Code Playgroud)

这将使用HTTP GET 将URL路由http://mysite.com/foobarfoobar操作.

更多信息:

  1. 请注意,def foobar在控制器中定义a 不是严格的要求(除非您需要在foobar显示视图之前执行某些操作) - 但视图必须存在.换句话说,即使def foobar控制器中不存在方法,foobar.html.erb仍将呈现视图.

  2. 以下是Rails 3中路线的概述.

  3. 此外,如果您还不知道,可以列出您的应用知道使用的所有路线rake routes.因此,如果输出rake routes未列出到某个控制器/操作的路由,则将发生"无路由匹配"错误.


Vij*_*Dev 0

错误说明了一切。您的 config/routes.rb 中没有相应的路由。检查默认路由是否被注释掉。如果是这样,您需要为新操作添加一条路线。