【问题标题】:Rails 3.0: Adding new action to a controllerRails 3.0:向控制器添加新动作
【发布时间】:2011-05-27 11:56:59
【问题描述】:

在 Rails 3.0 之前,向控制器添加新动作很容易。

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

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

但是,在 Rails 3.0 中,当我如上所述添加新操作时,出现以下错误:

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

rails 3.0 发生了什么变化?我做错了什么?

【问题讨论】:

    标签: routes ruby-on-rails-3


    【解决方案1】:

    将此添加到routes.rb

    get 'mycontroller/foobar'
    

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

    更多信息:

      1234563也就是说,即使控制器中不存在def foobar方法,视图foobar.html.erb仍然会被渲染。
    1. 这是good overview of routes in Rails 3

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多