0

在 Rails 指南中,有一段代码:

scope "admin" do
   resources :photos, :as => "admin_photos"
end
resources :photos

我的问题是,如果这两个请求被路由到同一个控制器,有什么方法可以区分它们吗?例如,/photos 和 /admin/photos 都会路由到 Photos 控制器的 index 方法,但是如何区分这些请求呢?

4

2 回答 2

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.

于 2014-01-10T15:48:37.157 回答
0

我认为你不能。无论如何,您可以使用namespace方法并为管理命名空间使用不同的控制器(如果它们相似,您可以从照片控制器继承您的管理控制器)。您可以在此处找到有关namespace方法的更多信息

于 2013-03-10T16:07:07.797 回答