У вас проблемы, потому что вы не ожидаете плюрализации.Когда вы определяете единственный маршрут 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 будет соответствовать статье в группах и будет неинформативным для конечных пользователей икак боты.