Ho una risorsa nidificata Bar
appartenente a Foo
. Posso elencare con successo tutti gli oggetti Bar
che appartengono a qualsiasi dato Foo
. Ma voglio anche essere in grado di generare una vista con tutti gli articoli Bar
elencati insieme, da qualunque oggetto Foo
a cui appartengono.Rails 4 - come aggiungere una route di indice per una risorsa nidificata, per elencare tutti gli elementi indipendenti dalla risorsa principale
La struttura del modello è:
# app/models/foo.rb
class Foo < ActiveRecord
has_many :bars
end
# app/models/bar.rb
class Bar < ActiveRecord
belongs_to :foo
end
L'instradamento è definito come:
# config/routes.rb
resources :foos do
resources :bars
end
ottengo i percorsi ci si aspetta da questa configurazione:
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
Che cosa ho bisogno è quello di generare un percorso per bars#index
non compreso nell'ambito del contesto di foo
. In altre parole, io voglio essenzialmente:
bars GET /bars(.:format) bars#index
Ho provato con l'opzione superficiale, in tal modo:
# config/routes.rb
resources :foos, shallow: true do
resources :bars
end
Tuttavia, questo non supporta il: azione index, per la documentation.
Qual è il modo migliore per farlo? È disponibile una discussione Stack Overflow utile here, utilizzando un valore before_filter
per determinare l'ambito, ma è del 2009. Apprezzate qualsiasi guida specifica su come impostare sia il controller che il file config/routes.rb
in modo appropriato!
L'aggiunta di 'risorse: barre' separatamente non funziona? –