добавить идентификатор или класс во флэш-сообщение - PullRequest
4 голосов
/ 04 февраля 2012

Есть ли способ добавить класс или идентификатор к конкретному флэш-сообщению?Мне нужно, чтобы некоторые сообщения исчезали, а некоторые сохранялись.Я хотел бы сделать это на основе класса HTML.

Спасибо за любую помощь

Ответы [ 3 ]

4 голосов
/ 04 февраля 2012

Нет ничего волшебного в том, что можно поместить во вспышку. Это просто хеш, который вставляется в сеанс и очищается для вас.

Вы могли бы (например) сделать

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

А потом в вашем макете

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

Но определенно есть несколько способов сделать это - вы можете просто использовать один класс, когда он flash[:notice], другой для flash[:error] и т. Д.

3 голосов
/ 04 февраля 2012

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 %>

Вот RailSast с дополнительной информацией о флеш-сообщениях.

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

0 голосов
/ 04 февраля 2012

Добавить класс:

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

Добавить идентификатор:

<%= 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...