フラッシュメッセージのレイアウト

flashとは

ページ遷移したときに簡単なメッセージを一時的に表示させる機能

使い方

flashはハッシュのように記述する
flash[:キー名] = "メッセージ"
キーにはデフォルトではnoticeとalertが用意されている
ここでbootstrapによってsuccess,danger,warning,infoなど様々なキーを使うことで、デザインの整ったflashメッセージを表示できる
ここで、これらのキーを使用する場合、application_controller.rbに
以下の設定を追加することで、Bootstrapに用意されているスタイルのフラッシュ
を定義できる

add_flash_types :success, :info, :warning, :danger

また、この宣言を記述することで、redirect_toメソッドのオプションに先ほど追加したキーを使ってメッセージを表示できる
example)

redirect_to login_path, success: 'ログインに成功しました'  

またflashメッセージはアクションが実行された時、次のアクション
が実行されるまで表示されるので下記のように

flash[:danger] = 'ログインできませんでした'
render 'new'

renderメソッドを使ってビューを表示する時、renderはコントローラのアクションを経由せず指定したビューを直接レンダリングするため、flashメッセージが次のアクション(違うページへ遷移など)を実行しても表示されてしまう!!
よってこの場合はflash.nowを使用するこれにより1回目のアクションを実行時にflashメッセージが削除されるようになる!!
flashメッセージはユーザーの新規登録やログインなど様々な場合に使われることが
多いので、下記のようにパーシャル化しておくと便利!!

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

flashはキーと値の2つをブロック引数にとる bootstrapのスタイルは < タグ class = "alert alert-キー名">と記述することで適用される、 今回のように、キー名にmessage_typeを渡して、flashのキーによってデザインが
切り替えられるように実装することで様々なフラッシュメッセージを表示できるし、 後からもキーの宣言を追加しやすくなる

参考文献

redirect_to使った時にBootstrap対応のフラッシュメッセージを表示させる - Qiita

【Rails】完全保存版!flashの使い方についてを徹底解説! | Pikawaka - ピカ1わかりやすいプログラミング用語サイト