rails 3.x では、shallow: true を使用してルートを平坦化できるので、好きなだけルートをネストします。
で実験してみてください
resources :account, shallow: true do
resources :people do
resources :notes
end
end
レーキ ルートを使用して、何が得られるかを確認してください :)
コメントに応じて更新
先ほど言ったように、rake ルートで遊んで、取得できる URL を確認してください。
resources :account, shallow: true do
resources :people, shallow: true do
resources :notes
end
end
これらのルートを取得します
:~/Development/rails/routing_test$ rake routes
person_notes GET /people/:person_id/notes(.:format) notes#index
POST /people/:person_id/notes(.:format) notes#create
new_person_note GET /people/:person_id/notes/new(.:format) notes#new
edit_note GET /notes/:id/edit(.:format) notes#edit
note GET /notes/:id(.:format) notes#show
PUT /notes/:id(.:format) notes#update
DELETE /notes/:id(.:format) notes#destroy
account_people GET /account/:account_id/people(.:format) people#index
POST /account/:account_id/people(.:format) people#create
new_account_person GET /account/:account_id/people/new(.:format) people#new
edit_person GET /people/:id/edit(.:format) people#edit
person GET /people/:id(.:format) people#show
PUT /people/:id(.:format) people#update
DELETE /people/:id(.:format) people#destroy
account_index GET /account(.:format) account#index
POST /account(.:format) account#create
new_account GET /account/new(.:format) account#new
edit_account GET /account/:id/edit(.:format) account#edit
account GET /account/:id(.:format) account#show
PUT /account/:id(.:format) account#update
DELETE /account/:id(.:format) account#destroy
ご覧のとおり、必要と判断したレベルに関係なく、すべてのモデルにアクセスできます。残りは、コントローラーのアクションに何を入れるかにかかっています。
id パラメーターが渡されない場合に適切なアクションを実行するように、アクションに実際に取り組む必要があります。そのため、特定のモデルの id を使用する場合は、id がパラメーター リストにあることを確認し、そうでない場合は別の方法を取ります。アクション。たとえば、アカウント ID を渡さない場合は、使用しないようにしてください。
あなたのコメントは、すでに浅いルートを使用していると述べていますが、それはあなたが質問に投稿したものではありませんか?