在Rails的指南,有此摘錄的代碼:Rails的多種資源,同一個控制器
scope "admin" do
resources :photos, :as => "admin_photos"
end
resources :photos
我的問題是,有沒有什麼辦法在這兩個請求之間進行區分,如果他們被路由到相同的控制器?例如,/ photos和/ admin/photos都會路由到Photos控制器的索引方法,但這些請求怎麼能夠彼此區分呢?
在Rails的指南,有此摘錄的代碼:Rails的多種資源,同一個控制器
scope "admin" do
resources :photos, :as => "admin_photos"
end
resources :photos
我的問題是,有沒有什麼辦法在這兩個請求之間進行區分,如果他們被路由到相同的控制器?例如,/ photos和/ admin/photos都會路由到Photos控制器的索引方法,但這些請求怎麼能夠彼此區分呢?
我認爲你不能。無論如何,您可以使用namespace
方法,併爲admin命名空間使用不同的控制器(如果它們相似,您可以從照片控制器繼承您的管理控制器)。您可以找到有關namespace
方法here
您可以使用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
。
使用命名空間結束 - 謝謝 – 2013-03-13 22:06:55