3

2 つのリソースがあり、1 つは別のネストされたリソースです。

parent_resourcechild_resource

これにより、次のルートが得られます。

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

child_resourceただし、 ごとに1 つしか存在しないparent_resourceため、サイトを使用している人にとっては非常に混乱します。child_resource パスを次のようにしたいと思います。

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

これを行う正しい方法は何ですか?

私のルート.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

しかし、ショーはどうですか?

rake ルートによって生成された私のルート:

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
4

1 に答える 1

7

ルートで、singularresourceメソッドを使用して子リソースを定義します。

resources :parent_resources do
  resource :child_resource
end

慣例により、子のコントローラーは複数形の ChildResourcesController のままです。

Rails には、ルーティングに関する非常に優れたガイドがあります。単一リソースのセクションを参照してください。

于 2012-07-02T15:56:50.510 に答える