フラッシュメッセージとは?
└特定のアクションが実行されたときに、メッセージを画面上に表示させるためのもの。
例えば、ログイン時に「ログインしました。」情報登録時に「登録しました。」などなど。。
https://school.runteq.jp/v2/curriculums/rails_basic/chapters/7/hint
https://school.runteq.jp/v2/curriculums/rails_basic/chapters/7/point
フラッシュメーセージの種類:
success:(成功時)= redirect_toの際に使用する。
danger:(失敗時)= renderの際に使用する。
flash.:(成功時)次のリクエストまで表示させることができる。= redirect_toの際に使用する。
flash.now.:(失敗時)現在のリクエストまでしか表示できない。= renderの際に使用する。
notice.:通知を出す時。主に成功した時のメッセージなど。
alert.:警告の通知を出す時。何かの動作に失敗時など。
※大体は、上の2つがよく使われる!!!
参考文献:https://qiita.com/__Wata16__/items/a9fd1f26274cae1d08cc
フラッシュメッセージの翻訳定義を追加する:
└フラッシュメッセージを表示させるときの表示内容をまとめる「ymlファイル」を作成する。
[user_sessions/_controller.rb]
def create
@user = login(params[:email], params[:password])
if @user
redirect_back_or_to root_path, success: t('.success')
else
flash.now[:danger] = t('.fail')
render :new
end
end
[views/ja.yml]
ja:
defaults:
login: 'ログイン'
register: '登録'
logout: 'ログアウト'
users:
new:
title: 'ユーザー登録'
to_login_page: 'ログインページへ'
create:
success: 'ユーザー登録が完了しました'
fail: 'ユーザー登録に失敗しました'
user_sessions:
new:
title: 'ログイン'
to_register_page: '登録ページへ'
password_forget: 'パスワードをお忘れの方はこちら'
create:
success: 'ログインしました'
fail: 'ログインに失敗しました'
destroy:
success: 'ログアウトしました'
フラッシュの定義を追加する
└Bootstrapに合わせて、フラッシュの定義をController全体で使えるように追加します。
class ApplicationController < ActionController::Base
#以下にフラッシュの定義を書くことによって、controller全体で使えるようになる!!!
**add_flash_types :success, :info, :warning, :danger**
before_action :require_login
private
def not_authenticated
redirect_to login_path
end
end
フラッシュメッセージの表示をViewに追加する
└フラッシュメッセージを表示するパーシャル(部分テンプレートファイル)を作成する。
views/shared/_flash_message.html.erb
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>
フラッシュメーセージを表示するパーシャルファイルを全体ビューファイルにrenderする。
<body>
<% if logged_in? %>
<%= render 'shared/header' %>
<% else %>
<%= render 'shared/before_login_header' %>
<% end %>
**<%= render 'shared/flash_message' %> ←<% end %>より外に書くこと!!**
<%= yield %>
<%= render 'shared/footer' %>
</body>