设计在其他页面中显示Flash消息

时间:2013-03-29 12:58:59

标签: ruby-on-rails devise flash-message

登录后,如果我转到/ users / edit页面,我会收到flash消息  “您已成功登录”。

在注册控制器中我试过:

flash.now  # either this or below one
flash.discard

同样我尝试过像

这样的布局
    <% if flash[:alert] || flash[:error] || flash[:notice] %>
       <%= content_tag :div, :class => "alert alert-info info-inside" do -%>
          <button class="close" data-dismiss="alert">×</button>
          <%= flash.now[:alert] if flash[:alert] %>
          <%= flash.now[:error] if flash[:error] %>
          <%= flash.now[:notice] if flash[:notice] %>
       <% end -%>
    <% end %>

此外,如果我创建产品并进入其他页面,它会显示错误的闪存消息。刷新它就会消失。

请告诉我如何避免此类Flash消息。我在我的布局文件中以及需要的控制器中尝试了flash.now和flash.discard。但它没有帮助我。

1 个答案:

答案 0 :(得分:0)

尝试以下代码。它会检查flash消息是否确实存在,然后抓取成功的消息和错误消息。

<% if flash.present? %>
<div id="flash" class="flash">
<% flash.each do |name, msg| %>
  <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
    <%= content_tag :div, msg, id: "flash_#{name}" if msg.is_a?(String) %>
  </div>
<% end %>