ben*_*itr 39 ruby-on-rails devise
使用Devise,我想知道是否有办法删除特定的Flash消息?(成功签署).
我关心视图中的其他消息,所以它只适用于已登录和已签名的消息.我是否必须覆盖控制器或还有其他方法?
谢谢!
shi*_*ara 59
您只需将其定义为本地文件中的空字符串即可.在这种情况下,你什么都看不到.
ben*_*itr 39
好!
正如Shingara所说,我在devise.en.yml中定义了一个空字符串
sessions:
signed_in: ''
Run Code Online (Sandbox Code Playgroud)
我也改变了以下一行(由nifty-generators提供):
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, :id => "flash" if msg.length > 0 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
就这样,我的CSS没有出现.
语言环境文件中的空字符串(如上所述),但还要添加以下CSS代码段以隐藏(而不是使用您的Flash视图进行修改)
.flash.alert:empty {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
另一种灵活的方法是在行动后取消通知:
class SessionsController < Devise::SessionsController
after_action :remove_notice, only: :destroy
private
def remove_notice
flash[:notice] = nil
end
end
Run Code Online (Sandbox Code Playgroud)
使用此解决方案,您可以添加条件以删除或不通知.
另一种方法是,如果您覆盖Devise控制器,则在create动作中放入以下代码,该代码将删除Flash消息:
class MyDevise::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
Run Code Online (Sandbox Code Playgroud)
这在另一个SO问题中得到了回答。 有关如何覆盖Devise控制器的博客文章,请参阅我的博客文章。
| 归档时间: |
|
| 查看次数: |
16526 次 |
| 最近记录: |