フラッシュメッセージのレイアウト
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わかりやすいプログラミング用語サイト