LoginSignup
3
2

【Rails】 deviseのフラッシュメッセージの表示/非表示/編集

Last updated at Posted at 2023-04-21

環境

ruby 3.2.1
rails 6.1.7.3
devise 4.9.2

フラッシュメッセージの表示

deviseでは、認証メッセージがflash []に格納される。
成功系 → flash[:notice]
失敗系 → flash[:alert]
格納された値をリダイレクト先のviewで呼び出したい箇所に配置する。

view
<% flash.each do |type, message| %>
  <%= content_tag(:div, message, 
      class: "alert alert-#{type == 'notice' ? 'success' : 'danger'}" %>
<% end %>
  • content_tagヘルパーでHTMLを生成しています。nameがnoticeの場合にはsuccessクラスを、それ以外の場合にはdangerクラスを付与しています。

フラッシュメッセージの非表示

ログアウトした時はフラッシュメッセージは表示したくないなど、特定の処理でフラッシュメッセージを非表示にしたい場合は、config/locales/devise.en.ymlファイルで非表示にしたい処理メッセージを空文字列にします。

config/locales/devise.en.yml
en:
  devise:
    sessions:
      signed_in: "Signed in successfully."
      signed_out: ""
      already_signed_out: "Signed out successfully."

フラッシュメッセージの編集

フラッシュメッセージを編集したい場合、config/locales/devise.en.ymlファイルを編集します。
日本語に変換することもできます。

config/locales/devise.en.yml
en:
  devise:
    sessions:
      signed_in: "編集"
      signed_out: "編集"
      already_signed_out: "編集"

gemを使って日本語にする

config/application.rbに以下の行を追加して、日本語をデフォルトの言語に設定します。

application.rb
config.i18n.default_locale = :ja

gemをインストール

Gemfile
gem 'rails-i18n'
gem 'devise-i18n'
$ bunlde install

日本語対応のファイルを生成

$ rails g devise:i18n:views user

以上で日本語に対応するようになります。

参考

deviseを日本語表記にする。

3
2
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
3
2