Ответ 1
Вы используете flash-помощник из seyhunak twitter-bootstrap-rails gem. Вместо использования помощника вы можете самостоятельно настроить код и посмотреть, как все работает.
Здесь, как я установил флеш-сообщения Rails с помощью Boostrap Twitter.
Rails использует: уведомление и: предупреждение как клавиши флэш-сообщения. Twitter Bootstrap предоставляет базовый класс .alert с дополнительными классами .alert-success и .alert-error (см. Документацию Bootstrap при оповещениях). Для получения сообщения "Уведомление" Rails необходимо разбить синтаксический разбор, чтобы стиль стиля "alert-success" Twitter-Bootstrap. Любое другое сообщение, в том числе сообщение "alert" Rails, будет оформлено с помощью стиля "alert-error" Twitter Bootstrap.
По умолчанию Twitter Bootstrap применяет зеленый фон для успеха .alert-success и красного фона для .alert-error. Twitter Bootstrap предоставляет третий класс .alert-info с синим фоном. С небольшим взломом можно создать флеш-сообщение Rails с настраиваемым именем, например: info, которое будет отображаться с классом Bootstrap.alert-info. Тем не менее, его разумно придерживаться соглашения Rails об использовании только "предупреждения" и "уведомления". В более ранних версиях Rails использовалась "ошибка", но в настоящее время практика заключается в использовании "предупреждения" вместо "ошибки".
Вы можете включить код для отображения флэш-сообщений непосредственно в вашем файле макета приложения или вы можете создать частичный. Вот пример с частичным.
Во-первых, что в макете приложения:
# app/views/layouts/application.html.erb
.
.
.
<%= render 'layouts/messages' %>
.
.
.
Далее, часть, которая включена в макет приложения:
# app/views/layouts/_messages.html.erb
# Rails flash messages styled for Bootstrap 3.0
# works with Rails 4.0 or Rails 4.1
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
И пример установки двух разных флэш-сообщений в контроллере:
class VisitorsController < ApplicationController
def new
flash[:notice] = 'Welcome!'
flash[:alert] = 'My birthday is soon.'
end
end
Этот пример исходит из углубленной статьи, которую я написал:
Для альтернативы, в которой используются четыре разных типа флеш-сообщений (успех, ошибка, предупреждение, уведомление), см. пример Rails Flash Messages с использованием Twitter Bootstrap.