从ActionController :: InvalidAuthenticityToken救出时不显示Flash消息

时间:2015-05-05 17:14:48

标签: ruby-on-rails flash

看起来像是一个有关rails的错误,但想确保在报告错误之前我没有错过任何内容。

我正尝试使用以下代码从应用程序控制器中的ActionController::InvalidAuthenticityToken进行救援:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  rescue_from ActionController::InvalidAuthenticityToken, with: :show_errors

  ....

  private

  def show_errors
    redirect_to root_path, alert: "Cookies are disabled"
  end
end

重定向工作正常,但不显示警报消息。新页面中的Flash哈希为空:#<ActionDispatch::Flash::FlashHash:0x007f9dbdb5c1d0 @discard=#<Set: {}>, @flashes={}, @now=nil>

应用程序控制器中没有其他过滤器可能影响哈希/导致另一个重定向。日志只显示一个预期的重定向。

也尝试了flash.keep[:alert] = ..flash.now[:alert] = ..;没有运气。

在两个不同的rails应用上获得此行为,一个使用4.2.0,另一个使用4.1.6

2 个答案:

答案 0 :(得分:0)

尝试

def show_errors
  flash[:error] = "Cookies are disabled"
  redirect_to root_path
end

答案 1 :(得分:0)

Andrew White对the issue I created上发生的事情做了解释:

  

由于闪存取决于会话并且会话是依赖的   对于工作的cookie,如果你想的话,它永远不会工作   它,: - )

     

我建议重定向到自定义网址或添加查询参数   触发显示消息的网址。

我按照建议重定向到自定义网址。