app/helpers/bootstrap_flash_helper.rb
module BootstrapFlashHelper
ALERT_MAPPING = {
:notice => :success,
:alert => :danger,
:error => :danger,
:info => :info,
:warning => :warning
}.freeze unless const_defined?(:ALERT_MAPPING)
def bootstrap_flash(options = { :close_button => true })
flash_messages = []
flash.each do |type, message|
# Skip empty messages, e.g. for devise messages set to nothing in a locale file.
next if message.blank?
type = type.to_sym
next unless ALERT_MAPPING.keys.include?(type)
tag_class = options.extract!(:class)[:class]
tag_options = {
class: "alert fade in alert-#{ALERT_MAPPING[type]} #{tag_class}"
}.merge(options)
close_button = ""
if options[:close_button]
close_button = content_tag(:button, raw("×"), type: "button", class: "close", "data-dismiss" => "alert")
end
Array(message).each do |msg|
text = content_tag(:div, close_button + msg, tag_options)
flash_messages << text if msg
end
end
flash_messages.join("\n").html_safe
end
end