2013-03-10 70 views
0

在Rails的指南,有此摘錄的代碼:Rails的多種資源,同一個控制器

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

我的問題是,有沒有什麼辦法在這兩個請求之間進行區分,如果他們被路由到相同的控制器?例如,/ photos和/ admin/photos都會路由到Photos控制器的索引方法,但這些請求怎麼能夠彼此區分呢?

回答

0

我認爲你不能。無論如何,您可以使用namespace方法,併爲admin命名空間使用不同的控制器(如果它們相似,您可以從照片控制器繼承您的管理控制器)。您可以找到有關namespace方法here

+0

使用命名空間結束 - 謝謝 – 2013-03-13 22:06:55

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