我有三个角色的用户模型,管理员,买家,卖家。 我还有一个仪表板控制器,目前正在登录,每个用户都被定向到不同的仪表板操作...
application_controller.rb
def after_sign_in_path_for(resource)
case resource.role
when "buyer"
buyer_dash_path
when "seller"
seller_dash_path
when "admin"
admin_dash_path
end
end
的routes.rb
get 'dashboard/admin' => 'dashboard#admin', as: 'admin_dash'
get 'dashboard/seller' => 'dashboard#seller', as: 'seller_dash'
get 'dashboard/buyer' => 'dashboard#buyer', as: 'buyer_dash'
因此,当买家登录时,他们会被重定向到“/ dashboard / buyer”,管理员会被重定向到“/ dashboard / admin”等。 如何删除操作名称以便将所有用户重定向到“/ dashboard”?
答案 0 :(得分:1)
您最好使用以下内容:
#config/routes.rb
resources :dashboard, only: [:index] #-> url.com/dashboard
#app/controllers/dashboard_controller.rb
class DashboardController < ApplicationController
def index
case current_user.role
when "admin"
#do something
render "dashboard/admin"
when "seller"
#do something
render "dashnoard/seller"
else
#do something
end
end
end
#app/views/dashboard/index.html.erb
<!-- do stuff in here -->
答案 1 :(得分:0)
你只能留下一条路线:
get 'dashboard' => 'dashboard#index'
在控制器中引入新动作:
def index
redirect_to root_path unless current_user
send(current_user.role)
render current_user.role
end
如果当前用户为seller
,则index
操作将执行以下操作:
seller()
render 'seller'
通过这些更改,您无需更改应用中的任何其他内容。