添加id或类到flash消息

时间:2012-02-03 21:57:14

标签: ruby-on-rails

有没有办法在特定的Flash消息中添加类或ID?我需要消除一些消息,有些消息仍然存在。我想基于一个html类来做这个。

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

关于什么可以投入闪光灯没有什么神奇之处。它只是一个填充在会话中的哈希值,并为您清除。

你可以(例如)做

flash[:notice] = {:class => :urgent, :body => 'hello'}

然后在你的布局中

- if flash[:notice]
  %div{:class => flash[:notice][:class]}
    = flash[:notice][:body]

但肯定有多种方法可以做到这一点 - 你可以在flash[:notice]时使用一个类,在flash[:error]时使用另一个类

答案 1 :(得分:3)

Flash消息只是存储在散列flash中。在您的视图中,您可以迭代所有的Flash消息,如下所示:

<% flash.each do |key, msg| %>
  <%= content_tag :div, msg, :id => key %>
<% end %>

您可以随时检查特定消息并附加特定类。也许是这样的:

<% flash.each do |key, msg| %>
  <% if msg.include? 'fatal' %>
    <%= content_tag :div, msg, :id => key, :class => 'fatal' %>
  <% end %>
<% end %>

这是一个有关Flash消息的更多信息的railscast。

http://railscasts.com/episodes/18-looping-through-flash

答案 2 :(得分:0)

添加课程:

<%= content_tag(:p, notice, class: 'notice') if notice %>
<%= content_tag(:p, alert,  class: 'alert' ) if alert  %>

添加ID:

<%= content_tag(:p, notice, id: 'notice') if notice %>
<%= content_tag(:p, alert,  id: 'alert' ) if alert  %>

它呈现(示例):

<p class="alert">Invalid email or password.</p>
<p id="alert">Invalid email or password.</p>