【问题标题】:How do I see default action routes in Rails 3?如何在 Rails 3 中查看默认操作路由?
【发布时间】:2012-05-06 03:28:23
【问题描述】:

Rails 新手,并遵循从创建经典博客应用程序开始的教程。

运行:Rails 3.2.3 和 Ruby 1.9.2

首先创建一个新的 Rails 项目,然后生成脚手架以创建入口控制器和视图。然后使用 rake db:migrate 在 mysql 数据库服务器上创建条目表。

启动 Rails 服务器 (WEBrick 1.3.1),并将我的浏览器指向 0.0.0.0:3000/entries,它工作正常,默认进入索引操作。

但我很惊讶地发现尝试将我的浏览器指向 /entries/index 会返回错误。我的条目控制器包括以下操作:索引、显示、新建、编辑、创建、更新、销毁。其中,只有进入 /entries/new 才有效,其余的似乎被 :id 默认值覆盖。

routes.rb 包含两行:

Mydiary::Application.routes.draw 做

资源:条目

我认为访问控制器操作的默认格式是 http://[hostname]/[controller]/[action]。因此,虽然不给出操作默认为 index 是有道理的,但坦率地说,http://[hostname]/entries/index 不起作用,这让我大吃一惊。这可能有什么原因?检查其余部分,看起来只有新操作有效。其余的都被 :id 覆盖。

顺便说一句,这与教程中所说的不符,它告诉我这是 Rails 3 中的新内容。

所以我想我的问题是,我在哪里可以找到默认情况下哪些操作被 :id 操作覆盖,哪些不是?很郁闷...

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    运行rake routes,您将看到如下所示的输出:

    entries     GET      /entries(.:format)           entries#index
                POST     /entries(.:format)           entries#create
    new_entry   GET      /entries/new(.:format)       entries#new
    edit_entry  GET      /entries/:id/edit(.:format)  entries#edit
    entry       GET      /entries/:id(.:format)       entries#show
                PUT      /entries/:id(.:format)       entries#update
                DELETE   /entries/:id(.:format)       entries#destroy
    

    基本上,这会导致:

    • 获取条目列表,执行GET /entries
    • 从表单发布数据以创建新记录,POST /entries
    • 获取表单以创建新条目,请执行GET /entries/new
    • 编辑特定条目GET /entries/:id/edit
    • 显示特定记录的详细信息,GET /entries/:id
    • 更新特定条目的值,PUT /entries/:id
    • 删除/销毁特定记录DELETE /entries/:id

    Rails 指南是开始学习这一切的好地方 - Rails Routing from the Outside In

    【讨论】:

      【解决方案2】:

      您可以通过从命令行运行 rake 路由来查看所有路由。资源路由将为所有默认操作生成路由,但正如您发现的那样,它们并不都遵循 cotroller/action/param 模式。

      【讨论】:

        【解决方案3】:

        查看this page 以获取有关路线的信息。他们有一个非常有用的表格,列出了使用资源时创建的路由、路径名、HTTP 方法、相应的操作等。

        【讨论】:

          【解决方案4】:

          查看特定控制器的路由:

          CONTROLLER= rake 路由 eg: CONTROLLER=documents rake routes

          对于命名空间:

          CONTROLLER=api/facebooks rake 路由

          CONTROLLER=admin/users rake 路由

          【讨论】:

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