Мой ответ для Bootstrap 2.0 начинается с полезного ответа @Railslerner, но в коде используется другой код.
app / helpers / application_helper.rb (аналогично ответу @ Railslerner)
module ApplicationHelper
def flash_class(level)
case level.to_sym
when :notice then "alert alert-info"
when :success then "alert alert-success"
when :error then "alert alert-error"
when :alert then "alert alert-error"
end
end
end
Где-то в app / views / layouts / application.html.erb :
<%= render 'layouts/flash_messages' %>
приложение / просмотров / макеты / _flash_messages.html.erb
<div>
<% flash.each do |key, value| %>
<div class="<%= flash_class(key) %> fade in">
<a href="#" data-dismiss="alert" class="close">×</a>
<%= value %>
</div>
<% end %>
</div>
Отличия:
Не забудьте включить bootstrap-alert.js, чтобы работали функции исчезновения и закрытия. Если вы используете гем bootstap-sass, добавьте эту строку в app / assets / javascripts / application.js :
//= require bootstrap-alert
Обновление от 9.09.2012: Обновление папок. Я фактически помещаю все, кроме помощника, в
app / views / layouts , так как
flash_messages
используется только в
app / views / layouts / application.html.erb .
Обновление 5/5/2015: После обновления до Rails 4.2 я обнаружил, что level
(по крайней мере, иногда) входит как строка и не соответствует оператору case в ApplicationHelper. Изменено это на level.to_sym
.