正确的单一嵌套资源的路由

时间:2012-07-02 15:49:02

标签: ruby ruby-on-rails-3 url routes nested-resources

我有2个资源,一个是另一个的嵌套资源:

parent_resourcechild_resource

这给了我以下路线:

somesite.com/parent_resources/14
somesite.com/parent_resources/14/child_resources/1

然而,每个child_resource只会有一个parent_resource,因此对于使用该网站的人来说,这非常令人困惑。我希望child_resource路径看起来像这样:

somesite.com/parent_resource/14/child_resource
somesite.com/parent_resource/14/child_resource/edit
etc

这样做的正确方法是什么?

我的routes.rb

resources :parent_resources do

   resource :child_resource do
   end

end 

从导轨指南到路线:

A singular resourceful route generates these helpers:

new_geocoder_path returns /geocoder/new
edit_geocoder_path returns /geocoder/edit
geocoder_path returns /geocoder

但是show怎么样?

我的路线由佣金路线产生:

parent_resource_child_resource      POST   /parent_resources/:parent_resource_id/child_resource(.:format)                 child_resources#create


new_parent_resource_child_resource  GET    /parent_resources/:parent_resource_id/child_resource/new(.:format)             child_resources#new

edit_parent_resource_child_resource GET    /parent_resources/:parent_resource_id/child_resource/edit(.:format)            child_resources#edit

                                    GET    /parent_resources/:parent_resource_id/child_resource(.:format)                 child_resources#show

                                    PUT    /parent_resources/:parent_resource_id/child_resource(.:format)                 child_resources#update

                                    DELETE /parent_resources/:parent_resource_id/child_resource(.:format)                 child_resources#destroy

1 个答案:

答案 0 :(得分:6)

在您的路线中,使用单数resource方法定义子资源:

resources :parent_resources do
  resource :child_resource
end

按照惯例,孩子的控制器仍然是ChildResourcesController,复数。

Rails有很好的路由指南。请参阅singular resources

部分