在 Rails 指南中,有一段代码:
scope "admin" do
resources :photos, :as => "admin_photos"
end
resources :photos
我的问题是,如果这两个请求被路由到同一个控制器,有什么方法可以区分它们吗?例如,/photos 和 /admin/photos 都会路由到 Photos 控制器的 index 方法,但是如何区分这些请求呢?
在 Rails 指南中,有一段代码:
scope "admin" do
resources :photos, :as => "admin_photos"
end
resources :photos
我的问题是,如果这两个请求被路由到同一个控制器,有什么方法可以区分它们吗?例如,/photos 和 /admin/photos 都会路由到 Photos 控制器的 index 方法,但是如何区分这些请求呢?
你可以用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
.
我认为你不能。无论如何,您可以使用namespace
方法并为管理命名空间使用不同的控制器(如果它们相似,您可以从照片控制器继承您的管理控制器)。您可以在此处找到有关namespace
方法的更多信息