Leo*_*Leo 3 ruby-on-rails devise
我需要在用户登录后控制重定向。我发现这个问题的许多答案都指向 after_sign_in_path_for 方法。所以我将它添加到我的 application_controller.rb 中:
def after_sign_in_path_for(resource_or_scope)
raise "SIGN IN TEST"
dashboard_path
end
Run Code Online (Sandbox Code Playgroud)
看看这是如何工作的。但是每当我登录时,都不会引发异常,只是忽略了方法。我该怎么做才能让设计使用它?
根据要求编辑,routes.rb 的片段
devise_for :users, :controllers => {
:sessions => "user/sessions",
:registrations => "user/registrations",
:passwords => 'user/passwords'
}
Run Code Online (Sandbox Code Playgroud)
——
我们像这样成功地使用它:
#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
def after_sign_in_path_for(resource)
dashboard_path
end
end
Run Code Online (Sandbox Code Playgroud)
——
如果您的方法没有被调用,您首先要删除RAISE调用,然后通过重新启动服务器重试。如果这不起作用,则问题可能与Devise您的系统的工作方式有关
如果您可以尝试删除RAISE并让我们知道结果,那将是一个很大的帮助!
更新
更好的是你使用users/sessions控制器。这是我们的:
class Users::SessionsController < Devise::SessionsController
####################
# Redirects #
####################
protected
#Login Path (if already logged in)
def after_sign_in_path_for(resource)
dashboard_path
end
#Logout Path
def after_sign_out_path_for(resource_or_scope)
root_url
end
end
Run Code Online (Sandbox Code Playgroud)