如何在Rails 3中看到默认操作路由?

时间:2012-05-06 03:28:23

标签: ruby-on-rails-3

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

运行:Rails 3.2.3和Ruby 1.9.2

首先创建一个新的Rails项目,然后生成脚手架以创建Entry控制器和视图。然后使用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]。因此,虽然没有给动作默认索引是有意义的,但坦率地说,我认为http:// [hostname] / entries / index不起作用。可能的原因是什么?检查其余部分,看起来只有新动作才有效。所有其余的都被:id。

覆盖

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

所以我想我的问题是,在哪里可以找到默认情况下:id动作覆盖哪些动作,哪些不是?非常令人沮丧......

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

查看特定控制器的路线:

CONTROLLER =佣金路线 例如:CONTROLLER =文件佣金路线

对于命名空间:

CONTROLLER = api / facebooks rake routes

CONTROLLER = admin / users rake routes