In meinem routes.rb
Ziel Ich habeSchienen - wie verschachtelte Controller für verschachtelte Ressource Route
namespace :admin do
resources :clients do, only: [:index] do
resources :products, only: [:index, :new, :create]
end
resources :products, only: [:index]
end
Beachten Sie, dass ich zwei Linien für resources :products
haben. Einer ist verschachtelt innerhalb resources :clients
und der andere als eine Top-Level-Ressource auf :admin
; jeder von diesen zwei hat einen anderen Zweck in der Anwendung.
rake routes
gibt mir:
admin_clients GET /admin/clients(.:format) admin/clients#index
admin_client_products GET /admin/clients/:client_id/products(.:format) admin/products#index
POST /admin/clients/:client_id/products(.:format) admin/products#create
new_admin_client_product GET /admin/clients/:client_id/products/new(.:format) admin/products#new
admin_products GET /admin/products(.:format) admin/products#index
Ich habe einen admin_client_products
für die verschachtelte product#index
Ressource. Ich habe auch admin_products
für die Top-Level product#index
Ressource. Sie weisen jedoch auf die gleiche Controller-Aktion hin: admin/product#index
.
Frage: An diesem Punkt brauche ich Schienen, um daraus abzuleiten, dass dies zwei verschiedene Aktionen sind. Gibt es unter Verwendung von Schienenkonventionen eine Möglichkeit, Schienen mitzuteilen, dass diese zwei Ressourcen unterschiedliche Controlleraktionen haben sollten, d. H. Eine, die admin/products#index
erreichen sollte und die andere admin/clients/products#index
?
Die verschachtelte Route sollte diese getroffen:
class Admin::Clients::ProductsController < Admin::BaseController
def index; end
end
Die Top-Level-Strecke dieses schl sollte:
class Admin::ProductsController < Admin::BaseController
def index; end
end