我建议您清除应用程序控制器中的哈希,除非它是设计控制器,因此您不需要为此进行额外的 http rest 调用。这是你可以做的
在您的 application_controller.rb 添加过滤器之前清除闪存,除非它是一个设计控制器:
before_filter :discard_flash, :unless => :devise_controller?
private
def discard_flash
flash.discard # discard the entire flash at the end of the current action
flash.discard(:warning) # discard only the "warning" entry at the end of the current action
end
现在,当用户与您的应用程序交互时,如果它不是设计控制器,则 Flash 对象将被丢弃,因此如果用户输入错误的密码,您仍然会显示 Flash 消息...如果用户成功登录并点击非设计控制器,那么flash 对象将被丢弃。对于 api 参考,请查看以下链接:http ://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html和http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers