У меня есть вложенный ресурс Bar
, который принадлежит Foo
. Я могу успешно перечислить все Bar
объектов, принадлежащих к любому заданному Foo
. Но я также хочу, чтобы иметь возможность создавать представление со всеми Bar
элементами, перечисленными вместе, из любого объекта Foo
, к которому они принадлежат.Rails 4 - как добавить индексный маршрут для вложенного ресурса, чтобы перечислить все элементы, не зависящие от родительского ресурса
Структура модели:
# app/models/foo.rb
class Foo < ActiveRecord
has_many :bars
end
# app/models/bar.rb
class Bar < ActiveRecord
belongs_to :foo
end
Маршрутизация определяется как:
# config/routes.rb
resources :foos do
resources :bars
end
я получить ожидаемые маршруты из этой конфигурации:
foo_bars GET /foos/:foo_id/bars(.:format) bars#index
POST /foos/:foo_id/bars(.:format) bars#create
new_foo_bar GET /foos/:foo_id/bars/new(.:format) bars#new
edit_bar GET /bars/:id/edit(.:format) bars#edit
bar GET /bars/:id(.:format) bars#show
PATCH /bars/:id(.:format) bars#update
PUT /bars/:id(.:format) bars#update
DELETE /bars/:id(.:format) bars#destroy
foos GET /foos(.:format) foos#index
POST /foos(.:format) foos#create
new_foo GET /foos/new(.:format) foos#new
edit_foo GET /foos/:id/edit(.:format) foos#edit
foo GET /foos/:id(.:format) foos#show
PATCH /foos/:id(.:format) foos#update
PUT /foos/:id(.:format) foos#update
DELETE /foos/:id(.:format) foos#destroy
Что мне нужно, чтобы генерировать маршрут для bars#index
, который не ограничен областью действия в контексте foo
. Другими словами, я хочу по существу:
bars GET /bars(.:format) bars#index
Я попытался использовать неглубокую вариант, таким образом:
# config/routes.rb
resources :foos, shallow: true do
resources :bars
end
Однако это не поддерживает: индекс действия, согласно documentation.
Каков наилучший способ для этого? Существует полезное обсуждение переполнения стека here, используя before_filter
, чтобы определить область действия - но это с 2009 года. Оцените любые конкретные рекомендации относительно того, как настроить как контроллер, так и файл config/routes.rb
соответствующим образом!
Добавление ресурсов: баров отдельно не работает? –