我正在Ruby on Rails 3.1.3中開發一個應用程序。我有不同類型的用戶(即管理員,運營商,廣告商等),每個用戶都有一個不同的主頁(或主頁)。我想創建一個路由幫助器,通過使用類似home_path
的東西,可以爲當前登錄用戶的主頁提供相應的路由。這主要是在某些操作後重定向(我想根據用戶類型重定向回各個主頁)。Rails 3:如何根據對象屬性或方法創建一個可以生成不同路由的路由幫助器?
我已經有一些可用的方法,如current_user
現在,我使用(返回登錄用戶的電流),current_user.admin?
(如果登錄用戶當前爲admin返回true),current_user.operator?
等
一個輔助方法來做到這一點,但它似乎不是一個非常Rails的方式來做到這一點。代碼如下反正:
def home_path(params = {})
user = current_user
case user
when user.admin?
params = {:controller => 'administrators', :action => 'index'}.merge(params)
when user.advertiser?
params = {:controller => 'advertisers', :action => 'show', :id => user.advertiser_id}.merge(params)
when user.operator?
params = {:controller => 'callcenter', :action => 'index'}.merge(params)
else
params = {:controller => 'posts', :action => 'home'}.merge(params)
end
url_for(params)
end
我想這應該與約束路由來完成,但我仍然不明白它如何完成依賴於.admin?
,.operator?
等方法。任何幫助,將不勝感激。
這實際上相當不錯。 – MurifoX