如何在设计sing_in之后重定向不同的不同控制器动作

时间:2017-02-18 20:06:07

标签: ruby-on-rails redirect devise ruby-on-rails-5

我是ROR的新手,我使用的是Rails 5版本,我已经成功地从设计中创建了sign_in功能。

我正在使用sign_in,sign_up等设计。

我创建了三个角色:super_adminmanagermoderator

super_admin拥有所有管理权限,但其他人则没有。

get 'manager/dashboard', :as => 'manager_dashboard'
get 'moderator/dashboard', :as => 'moderator_dashboard'
get 'users/dashboard', :as => 'users_dashboard'
root "home#index"
devise_for :users 

我想在sign_in使用devise重定向到不同的控制器操作之后。

    在sign_in重定向用户#dashboard。之后
  • super_admin
  • 经理在sign_in重定向经理#dashboard。
  • 之后
  • 主持人在sign_in重定向主持人#dashboard。
  • 之后

1 个答案:

答案 0 :(得分:2)

您想使用after_sign_in_path

ApplicationController中,定义方法after_sign_path_for(resource)

def after_sign_in_path_for(resource)
  if resource.super_admin?
    users_dashboard_path
  elsif resource.manager?
    manager_dashboard_path
  else
    moderator_dashboard_path
  end
end