设计方法 after_sign_in_path_for 不起作用

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)

Ric*_*eck 7

此官方文档是在这里

——

我们像这样成功地使用它:

#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)