Bootstrapを利用したフラッシュメッセージの設定
Railsにおけるフラッシュメッセージ
フラッシュメッセージとは、ログインに成功/失敗したときなど、ページの一番上にでる一時的なメッセージのこと。 Railでは、flashというハッシュ形式のオブジェクトが設定されている。 デフォルトではnoticeとalertというキーがあるが、bootstrapを使用すると、これ以外のメッセージも使用できる。
Bootstrapを使えるようにキーを許可する。
application_controller.rb
class ApplicationController < ActionController::Base add_flash_types :success, :info, :warning, :danger end
パーシャル化しておく
いろんな場面で使用するので、パーシャル化する。 パーシャルを読み込めるように、application.html.erbにもrenderするように追記。 ※これを忘れて10分くらい悩んだ
_flash_message.html.erb
<% flash.each do |key, value| %> <p class="alert alert-<%= key %>"> <%= value %> </p> <% end %>
application.html.erb内で表示させたいところに追記。今回はヘッダーの下にした。
<%= render 'shared/flash_message' %>
フラッシュメッセージを表示させたいアクションに追記する。
このとき、redirect_to とrenderで使い方が違うので注意! 文字通り、redirect_toは指定した遷移先に飛ぶ。
先に行った許可設定のおかけで、Controllerのredirectの行にフラッシュメッセージも一行で記載できる。
def create @user = login(params[:email], params[:password]) if @user redirect_back_or_to root_path, success: 'ログインしました' else flash[:danger] = 'ログインに失敗しました' render :new end end
昨日やったように、翻訳設定をしておいた方がいいかも
redirect_back_or_to root_path, success: t('.success')