【rails】フラッシュメッセージの設定

はじめに

フラッシュメッセージの設定について

フラッシュメッセージの設定

Bootstrapに用意されているスタイルのフラッシュ一覧

:alert, :notice  ※デフォルト
:success, :info, :warning, :danger

applicationコントローラに下記のadd_flash_typesを定義すると、コントローラでflash:の部分を省略できるようになります。

class ApplicationController < ActionController::Base
  add_flash_types :success, :info, :warning, :danger
end
redirect_to login_path, flash: { success: t'ユーザー登録が完了しました。' }
↓↓
redirect_to login_path, success: t'ユーザー登録が完了しました。'

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

<% flash.each do |message_type, message| %>
  <div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>

class="alert alert-<%= message_type %>"のようにクラスを指定することで、

先程定義したフラッシュメッセージのスタイルごとに色を変えたりできるようになります。

またcontent_tagを使って表すこともできます。

<% flash.each do |message_type, message| %>
 <%= content_tag(:div, message, class: "alert alert-#{message_type}") %>
<% end %>

content_tagは第一引数にタグをもち、第二引数にその中の値をとります。

また、classなども指定できます。

<%= content_tag(:div, message, class: "alert alert-#{message_type}") %>
↓↓
<div class="alert alert-#{message_type}">message</div>