22
26

More than 5 years have passed since last update.

deviseでのフラッシュメッセージ利用

Posted at

deviseでフラッシュメッセージを利用する

deviseを導入し、サインインやログアウトをした際に、画面上部に”ログインしました。” ”ログアウトしました。”のようなメッセージを表示できるようにする。

1.フラッシュメッセージのビューを作成

フラッシュメッセージ用のビューファイル_notifications.html.erbをviews/layoutsに配置し、application.html.erbのbody内でrenderで読み込む。
flashはデフォルトで"notice(動作成功時)"と"alert(失敗時)"の2つのキーを作成する。

_notifications.html.erb
<% flash.each do |key, value| %>
  <%= content_tag(:div, value, class: #{key}) %>
<% end %>
application.html.erb
<body>
  <%= render 'layouts/notifications' %>
  <%= yield %>
</body>

2.フラッシュメッセージにCSSを適用させる

flashオブジェクトでnoticeとalertキーを作成しているので、それぞれに対しCSSを適用させる。

_flash.css
.notice {
  color: white;
  background-color: blue;
}
.alert {
  color: white;
  background-color: red;
}

[番外]deviseの日本語化

deviseはデフォルトで英語設定されているので、上記で表示できるようになったフラッシュメッセージは英語。これを日本語表記に変更する。

gemのインストール

gem 'rails-i18n', '~> 5.1' #railsのバージョンにより変更させる
$bundle install
$rails s

日本語ファイルをダウンロードし、config/locales以下に配置

devise.ja.yml

日本語化のためにapplications.rbを編集

application.rb
class Application < Rails::Application
  config.i18n.default_locale = :ja
end
22
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
26