あなたが複数化を目にしていないため、問題が発生しています。単一のresource
ルートを定義した場合、Railsはそれをid
で各メンバーを参照するコレクションとして扱いません。代わりに、グループと記事の両方のための複数のresources
をしたい:
resources :groups do
resources :articles
end
は次のルートを生成します
group_articles GET /groups/:group_id/articles(.:format) {:action=>"index", :controller=>"articles"}
POST /groups/:group_id/articles(.:format) {:action=>"create", :controller=>"articles"}
new_group_article GET /groups/:group_id/articles/new(.:format) {:action=>"new", :controller=>"articles"}
edit_group_article GET /groups/:group_id/articles/:id/edit(.:format) {:action=>"edit", :controller=>"articles"}
group_article GET /groups/:group_id/articles/:id(.:format) {:action=>"show", :controller=>"articles"}
PUT /groups/:group_id/articles/:id(.:format) {:action=>"update", :controller=>"articles"}
DELETE /groups/:group_id/articles/:id(.:format) {:action=>"destroy", :controller=>"articles"}
groups GET /groups(.:format) {:action=>"index", :controller=>"groups"}
POST /groups(.:format) {:action=>"create", :controller=>"groups"}
new_group GET /groups/new(.:format) {:action=>"new", :controller=>"groups"}
edit_group GET /groups/:id/edit(.:format) {:action=>"edit", :controller=>"groups"}
group GET /groups/:id(.:format) {:action=>"show", :controller=>"groups"}
PUT /groups/:id(.:format) {:action=>"update", :controller=>"groups"}
DELETE /groups/:id(.:format) {:action=>"destroy", :controller=>"groups"}
あなたはgroups
とarticles
セグメントをオフのままにしたい場合は、それぞれに:path => ''
を渡すことができますresources
の定義に従いますが、http://example.com/1/2へのリクエストはグループの下の記事にマップされ、エンドユーザーとボットには似通っていないため注意深く踏みにじる必要があります。
ああ、申し訳ありませんが、私は 'resources'を使うつもりでした。しかし、 ':path => '''オプションは機能します – ShiningRay