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