Rails禁用devise的Flash消息

如何禁用所有devisegemFlash消息(“成功login”,“你注销”)? 谢谢。

可能最简单的方法是这样做

  1. 将每条消息定义为空string
  2. 在显示闪光信息之前,请检查string的长度。

在您的devise.en.yml文件中,将每条消息指定为空:

 en: errors: messages: not_found: '' already_confirmed: '' not_locked: '' 

接下来,在您的布局中,检查空白的闪存string,然后再输出它们。

 <% flash.each do |key, value| %> <%= content_tag :div, value, :class => "flash #{key}" unless value.blank? %> <% end %> 

一个更适合我的答案是像这样覆盖devise会话控制器

 class SessionsController < Devise::SessionsController # POST /resource/sign_in def create super flash.delete(:notice) end # DELETE /resource/sign_out def destroy super flash.delete(:notice) end end 

这安全地覆盖了删除Flash消息的创build和销毁方法

我已经能够通过重写is_flashing_format?禁用它们在给定的控制器is_flashing_format?

 def is_flashing_format? false end 

我正在使用Devise 3.5.6

Devise包含一个方便的生成器,将所有视图复制到您的项目中:

 rails generate devise:views 

这样,您可以自己编辑视图,并决定要保留或丢弃(闪存消息)。