Ich habe eine verschachtelte Ressource Bar
, die zu Foo
gehört. Ich kann erfolgreich alle Bar
Objekte auflisten, die zu einem gegebenen Foo
gehören. Aber ich möchte auch in der Lage sein, eine Ansicht mit allen Bar
Elementen zu erstellen, die zusammen aufgelistet sind, von jedem Objekt, dem sie angehören.Rails 4 - Wie füge ich eine Indexroute für eine verschachtelte Ressource hinzu, um alle Elemente unabhängig von der übergeordneten Ressource aufzulisten
Die Modellstruktur ist:
# app/models/foo.rb
class Foo < ActiveRecord
has_many :bars
end
# app/models/bar.rb
class Bar < ActiveRecord
belongs_to :foo
end
Das Routing ist definiert als:
# config/routes.rb
resources :foos do
resources :bars
end
ich die erwarteten Routen aus dieser Konfiguration erhalten:
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
Was ich brauche, ist zu Erstellen Sie eine Route für bars#index
, die im Rahmen vonnicht beschränkt ist. Mit anderen Worten, ich möchte im Wesentlichen:
bars GET /bars(.:format) bars#index
Ich habe versucht, die flache Option, also: Index Aktion, pro den documentation:
# config/routes.rb
resources :foos, shallow: true do
resources :bars
end
Dies ist jedoch nicht die nicht unterstützt.
Was ist der beste Weg, dies zu tun? Es gibt eine hilfreiche Stack Overflow-Diskussion here, mit einem before_filter
, um den Umfang zu bestimmen - aber es ist von 2009. Schätzen Sie jede spezifische Anleitung, wie Sie den Controller und die config/routes.rb
Datei entsprechend einrichten!
Hinzufügen 'Ressourcen: Bars' separat funktioniert nicht? –