看起来像是一个有关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
。
答案 0 :(得分:0)
尝试
def show_errors
flash[:error] = "Cookies are disabled"
redirect_to root_path
end
答案 1 :(得分:0)
Andrew White对the issue I created上发生的事情做了解释:
由于闪存取决于会话并且会话是依赖的 对于工作的cookie,如果你想的话,它永远不会工作 它,: - )
我建议重定向到自定义网址或添加查询参数 触发显示消息的网址。
我按照建议重定向到自定义网址。