DeviseのflashにBootstrapを使う
- rails 6.0.0
- devise 4.7.1
- bootstrap 4.3.1
Deviseのflash keyにはデフォルトでnotice
やalert
が使われていますが、これを他のkeyで置き換えたい。
例えばDeviseとBootstrapを組み合わせて使うときにBootstrapのAlertには.alert-notice
クラスはないので、それを置き換えて、Bootstrapで定義されている.alert-success
クラスを使えるようにします。
helperをつくる
まずは”devise_helper.rb”というファイルを新たに作成。
ここではDeviseで使われているkeyをBootstrapのAlertで使われているクラス名に置き換えています。
module DeviseHelper
def bootstrap_alert(key)
case key
when "alert"
"warning"
when "notice"
"success"
when "error"
"danger"
end
end
end
view
Viewでは新しく”app/views/layouts/_flashes.html.erb”ファイルを作成し以下のようにします。
<% flash.each do |key, value| %>
<div class="alert alert-<%= bootstrap_alert(key) %>">
<strong>
<%= value %>
</strong>
</div>
<% end %>
あとは”app/views/layouts/application.html.erb”とかに<%= render 'layouts/flashes' %>
を追加すればOKです。