我正在尝试弄清楚如何为不同的devise_scope用户模型重定向到root。能够在每个范围内无问题登录/退出,但root只能作为第一个(公司)工作。 我尝试将 device_scope 更改为 或范围仍然没有运气
/routes.rb
authenticated :user do
devise_scope :company do
root :to => 'company/main#account', :as => :company_root
get 'main/account', :to => 'company/main#account', :as => :company_main_account
end
devise_scope :employee do
root :to => 'employee/main#account', :as => :employee_root
get 'employee/main/account', :to => 'employee/main#account', :as => :employee_main_account
end
devise_scope :professional do
root :to => 'professional/main#account', :as => :professional_root
get 'professional/main/account', :to => 'professional/main#account', :as => :professional_main_account
end
end
unauthenticated do
root :to => 'welcome#index'
end
尝试这种方法也没有运气,root不适用于所有范围
root :to => 'company/main#account', :constraints => lambda { |request|request.env['warden'].user.class.name == 'Company' }, :as => "company_root"
root :to => 'employee/main#account', :constraints => lambda { |request| request.env['warden'].user.class.name == 'Employee' }, :as => "employee_root"
感觉我已经尝试了所有可能的方法,请任何帮助表示赞赏。
答案 0 :(得分:0)
您可以尝试使用一个根,root :to => 'welcome#index'
在你的welcome
控制器中,处理它
def index
if user_signed_in?
if user.class.name == "Company"
redirect_to company_root_path(current_user)
elsif user.class.name == "Employee"
redirect_to employee_root_path(current_user)
else
redirect_to professional_root_path(current_user)
end
end
end
可能有一些更好的解决方案,但我想你可以从这个开始。