我正在阅读Patrick Lenz的Simply Rails ...也许我错过了什么,似乎每当我们放
map.resources :stories
在routes.rb
中然后立即,控制器将有特殊约定,现在Story是一个RESTful资源?也许作者使用了资源这个词,但没有提到它是RESTful但它们是同一个东西?
答案 0 :(得分:4)
在路由中使用它意味着您自动获得一些标准路由,以帮助您构建一个宁静的应用程序。例如:
new_story GET /story/new(.:format) {:action=>"new", :controller=>"stories"}
edit_story GET /story/edit(.:format) {:action=>"edit", :controller=>"stories"}
story GET /story(.:format) {:action=>"show", :controller=>"stories"}
PUT /story(.:format) {:action=>"update", :controller=>"stories"}
DELETE /story(.:format) {:action=>"destroy", :controller=>"stories"}
POST /story(.:format) {:action=>"create", :controller=>"stories"}
只需在路线文件中包含这一行,就可以使用所有这些路径。您只需要确保在新的,编辑,显示,更新,销毁和创建故事控制器的操作中提供正确的功能,您将获得一个宁静的设计。
为了查看路径可用的内容,您可以转到应用程序文件夹并提供命令:
rake routes
这将根据您在路线文件中输入的内容输出所有可用的路径。
答案 1 :(得分:2)
BUT !!!如果你的控制器中有其他动作,除非你引入上述.resources行以外的其他路线,否则它们将无法找到!
因此,如果您在故事控制器中有一个名为turn_page的操作,则需要在map.resources行之前包含map.connect行 - 就像在此片段中一样:
map.connect 'stories/turn_page', :controller => 'stories', :action => 'turn_page'
map.resources :stories
希望有人帮助!由于所有示例都是“常规”路由或通过.resources语句定义的REST集,我在这个问题上工作了几个小时!
答案 2 :(得分:1)
是。一旦将其添加到路由中,您的Story控制器将以预期的方式响应常见的REST动词。