点滅はタイプ/値のハッシュで再グループ化されます。フラッシュのためにプレゼンテーションタグをラップするヘルパーを作成することをお勧めします。
フラッシュの値は、単一の文字列、配列または文字列にすることができます。私は個人的にフラッシュの周りのラッパーを使用して、同じ種類の点滅をたくさん押すことができます
次のコードでは、文字列または配列のフラッシュが処理されます。このラッパーはちょっと枠組みにとらわれないで、あなたが欲しいしかしsingle_flash
を定義し、ちょうどあなたのレイアウトで<%= flashes %>
を使用することができますflash.each do |type, content|
def flashes
content_tag(:div, class: 'flash-group') do
flash.each do |type, content|
if content.respond_to?(:each)
# If you have an array of flashes, regroup them under the same "flash" block
concat(single_flash(type, flash) do
# The flash messages are added as a list
content_tag(:ul) do
content.flatten.each do |message|
msg = if message.respond_to?(:html_safe)
message.html_safe
else
msg
end
concat(content_tag(:li, msg))
end
end
end)
else
concat(single_flash(type, content.html_safe))
end
end
end
end
に注意してください。
あなたの材料の実装のためには、例えば、私のブートストラップの実装については
def single_flash(type, content = nil)
type_class = case type
when 'alert'
'red'
when 'warning'
'deep-purple'
when 'success'
'green'
else
'?'
end
Materialize.toast(content, 4000, type_class)
end
のようなものを持っていると思います
# Render a single flash, styles according to the flash type
def single_flash(type, content = nil)
alert_class = ['alert alert-dismissible media']
contextual_class = case type.to_sym
when :alert, :danger, :error, :fatal
'danger'
when :warning, :todo
'warning'
when :notice, :success
'success'
else
'info'
end
alert_class << "alert-#{contextual_class}"
close_class = "close text-#{contextual_class}"
content_tag(:div, class: alert_class, role: 'alert') do
concat(content_tag(:div, class: 'flash-icon media-left media-middle') do
font_awesome(case type.to_sym
when :fatal, :error
'exclamation-triangle'
when :danger, :warning
'exclamation-triangle'
when :success
'check'
when :notice, :info
'info-circle'
else
'question'
end)
end)
concat(content_tag(:div, class: 'flash-message media-body') do
block_given? ? yield : simple_format(content)
end)
concat(content_tag(:div, class: 'media-right media-middle') do
concat(content_tag(:button, class: close_class, 'data-dismiss': 'alert') do
concat(content_tag(:span, aria_hidden: true) {'×'.html_safe })
concat(content_tag(:span, class: 'sr-only') { 'Close' })
end)
end)
end
end