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

时间:2010-12-18 07:04:57

标签: routes ruby-on-rails-3

在rails 3.0之前,向控制器添加新操作非常简单。

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

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

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

  

没有路线匹配“/ mycontroller / foobar”

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

3 个答案:

答案 0 :(得分:19)

将此添加到routes.rb

get 'mycontroller/foobar'

这会使用HTTP GET将网址http://mysite.com/foobar路由到foobar操作。

更多信息:

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

  2. 这是good overview of routes in Rails 3

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这个问题在上周被修改过了。你会在这里找到你需要的东西 Rails app doesn't see my views