闪存消息没有出现在设计after_sign_in_path中

时间:2014-08-16 21:15:25

标签: ruby-on-rails ruby-on-rails-4 devise

我添加了一个设计after_sign_in_path_for方法,但我的flash消息没有出现。有什么想法吗?

  def after_sign_in_path_for(resource)
    case current_user.default_role_sym
    when  :super_admin
      flash.now[:notice] = 'Signed in as Super Admin'
      root_url
    when  :company_admin
      flash.now[:notice] = 'Signed in as company admin'
      root_url
    else
      msg = "Signed in as ELSE"
      flash.now[:notice] = 'Signed in as pending client'
      root_url
    end
  end

2 个答案:

答案 0 :(得分:1)

在调用登录路径以获取将用户重定向到的URL之后,因此在调用该方法之后,将从Rails发出302重定向。浏览器将向您的rails应用程序发出另一个请求,指出您返回的URL(在本例中为root_url)。 flash.now仅在当前请求期间可用,请求完成后闪存将为空。但是,如果您设置了flash [:notice],它将在下一个请求中可用。

尝试设置flash [:notice]而不是flash.now [:notice]。有关详细信息,请参阅this rails guide

答案 1 :(得分:1)

只需将方法移至application_controller.rb即可。