我正在用 Ruby on Rails 3.1.3 制作一个应用程序。我有不同类型的用户(即管理员、操作员、广告商等),每个用户都有不同的主(或主页)页面。我想制作一个路由助手,通过使用类似home_path
. 这主要用于在某些操作后重定向(我想根据用户类型重定向回各自的主页)。
我已经有一些可用的方法,例如current_user
(返回当前登录的用户),current_user.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?
。对此的任何帮助将不胜感激。