在Rails指南中,有以下代码摘录:
scope "admin" do
resources :photos, :as => "admin_photos"
end
resources :photos
我的问题是,如果它们被路由到同一个控制器,有没有办法区分这两个请求?例如,/ photos和/ admin / photos都会路由到Photos控制器的索引方法,但这些请求怎么能相互区分?
答案 0 :(得分:1)
您可以使用defaults
区分它,如下所示:
scope "admin" do
resources :photos, :as => "admin_photos", defaults: { area: 'admin' }
end
resources :photos, defaults: { area: 'public' }
您的控制器中将提供params[:area]
值。当然,你可以用不同的名称命名。
我认为您可能遇到的问题是form_for @photo
将始终适用于普通:photos
路线。您必须添加form_for @photo, as: admin_photos
(将值放入params[:admin_photos]
),或者传递url: admin_photos_path
。
答案 1 :(得分:0)
我想你不能。无论如何,您可以使用namespace
方法并使用不同的控制器来管理命名空间(如果它们相似,您可以从照片控制器继承您的管理控制器)。您可以找到有关namespace
方法here