Rails禁用devise的Flash消息
如何禁用所有devisegemFlash消息(“成功login”,“你注销”)? 谢谢。
可能最简单的方法是这样做
- 将每条消息定义为空string
- 在显示闪光信息之前,请检查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
这样,您可以自己编辑视图,并决定要保留或丢弃(闪存消息)。