#はじめに
flashとは、ページ遷移した時に簡単なメッセージを一時的に表示させる機能です。
例えば、ユーザーがログインに成功した時に『ログインできました。』と表示させることで、ユーザーが進行具合を確認できるというものです。
#目次
1 基本的な書き方
2 flashとflash.nowの違い
#1. 基本的な書き方
###コントローラーの編集
flashはハッシュのような形で扱います。
flash[:キー名] = “表示さたいメッセージ”
キー名はあらかじめ用意せれているnoticeかalertオプションを用います(自分で好きな名前をつけることも可能です)。
例
controlle.rb
if @outgo.update(outgo_params)
flash[:alert] = ‘メッセージが’登録されました。’
redirect_to root_path
else
~ 略 ~
###ビューの編集
フラッシュメッセージを表示させたい箇所に下記を記述します。
<%= flash[:キー名] %>
例
html.erb
<%= flash[:alert] %>
#2. flashとflash.nowの違い
###両者の使い分け
- flashは次のアクションが動いた後のビューファイルにflashメッセージを表示する時(redirect_toを用いた時)
- flash.nowは現在のアクションで表示するビューファイルのみ有効なflashメッセージを表示させたい時(renderを用いた時)
###renderとredirect_toの挙動
- render : controller → view
コントローラーの直後にビューを表示しています。 -
redirect_to : controller → URL → route → controller → view
コントローラーの直後に一度ルーティングを経由してビューを表示しています。
なので
flashは最初のアクションが実行された後の1回のみflashメッセージが表示されるのでredirect_toメソッドと一緒に用います。
flash.nowは次のアクションが動く間表示されるのでrenderメソッドと一緒に用います。
#参考リンク
https://pikawaka.com/rails/flash
https://qiita.com/dice9494/items/2a0e92aba58a516e42e9