0

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 操作覆盖,哪些不是?非常令人沮丧...

4

4 回答 4

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 路由

于 2012-05-06T03:51:32.553 回答
0

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

于 2012-05-06T03:36:46.057 回答
0

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

于 2012-05-06T03:40:30.860 回答
0

要查看特定控制器的路由:

CONTROLLER= rake routes 例如: CONTROLLER=documents rake routes

对于命名空间:

CONTROLLER=api/facebooks rake 路由

CONTROLLER=admin/users rake 路由

于 2013-05-03T05:44:48.117 回答