Как определить тип сообщений flash[] в Rails

Я хотел бы иметь другой стиль для разных типов флеш-сообщений: ошибка, уведомление, успех. Как определить тип флэш-сообщений, переданных моему представлению?

В моем контроллере у меня есть:

flash[:error] = "Access denied."

В моем application.html.haml у меня есть:

  - if not flash.empty?
    - flash.each do |key, value|
      %div{:class => "alert-message #{key}"}= value

Спасибо.


person AdamNYC    schedule 09.12.2011    source источник
comment
Похоже, вы уже знакомы с классами CSS?   -  person sevenseacat    schedule 09.12.2011


Ответы (1)


flash по существу основан на хеше. Каждый вид мгновенного сообщения — это просто значение, связанное с клавишей символа для этого типа. Итак, flash[:error] для сообщений об ошибках, flash[:notice] и flash[:success] для их типов ключей. Вы даже можете определить свои собственные типы (просто используя любой символ). И вы можете установить любое количество ключей одновременно (например, вы можете установить flash[:notice] и flash[:error] в одном запросе).

В вашем примере это создание div с классом alert-message #{key}. Так, например, если вы установите flash[:notice], вывод будет:

<div class="alert-message notice">Notice message</div>

И он будет печатать по одному для каждого установленного вами типа. Итак, если в запросе установлены flash[:error] = 'something went terribly wrong' и flash[:notice] = 'take a look around', вы получите этот HTML-код из этого шаблона:

<div class="alert-message error">something went terribly wrong</div>
<div class="alert-message notice">take a look around</div>
person Ben Lee    schedule 09.12.2011
comment
Спасибо, Бен. Это именно тот ответ, который я ищу. - person AdamNYC; 09.12.2011