flashメッセージ
flashメッセージの設定方法
flashオブジェクトは、デフォルトでalertキーとnoticeキーが設定されているが、特定のキーを指定する事でBootstrapに用意されているスタイルのフラッシュを利用できるようになる。 [app/controllers/application_controller.rb]に以下の記載をする事で、デフォルトのalertキーとnoticeキー以外で、Bootstrapに用意されているスタイルのフラッシュを定義できる。 また、上記の設定を行うことでControllerのredirectをフラッシュメッセージを含めて1行で記載できる。 add_flash_typesを定義しなくても毎回flashを記載すればフラッシュメッセージの表示はできるが、なるべく記述量を減らすようにする。
class ApplicationController < ActionController::Base add_flash_types :success, :info, :warning, :danger end
下記のようにflashメッセージには、lazy lookup記法を使って翻訳情報を利用した方が国際化にも適している。
def create @user = login(session_params[:email], session_params[:password]) if @user redirect_back_or_to root_path, success: (t '.success') else flash.now[:danger] = (t '.fail') render :new end end
Bootstrapを適用したflashメッセージを表示するために、[views/shared/flash_message.html.erb]などのファイルを作り[views/layouts/application.html.erb]などからrenderするなどする。 [views/shared/flash_message.html.erb]に以下のような記載をして、Bootstrapを適用したflashメッセージを表示する。
<% flash.each do |message_type, message| %> <div class="alert alert-<%= message_type %>"><%= message %></div> <% end %>
Bootstrapを利用したキーとflashメッセージの見た目
参考記事: