Flashメッセージとは?
リダイレクトを表す「redirect_to」で使い、次のリクエスト時に特定のちょっとしたメッセージを渡すことができるRailsが用意している機能です。また、「render」で同じリクエスト内でのメッセージの受け渡しをすることも可能です。
ユーザーに「XXが成功した」、「XXが失敗した」などのお知らせメッセージを表示することができる機能です。
Flashメッセージの仕組み
内部的にはセッションを利用することで実現されています。
データ様式
Hash型のデータになります。
実装方法
リダイレクト時にメッセージを渡す方法
下記のように記述します。
1 |
redirect_to [任意のURL], notice: "Flashメッセージの内容" |
下記のように2行で書き換えることも可能です。
1 2 |
flash[:notice] = "Flashメッセージの内容" redirect_to [任意のURL] |
レンダー時(同じリクエスト内で)にメッセージを渡す方法
renderを使った同じリクエスト内でもメッセージの受け渡しは可能です。
1 |
flash.now[:notice] = "メッセージ内容 |
下記のように書き換えることもできます。
1 |
flash.now.notice = "メッセージ内容" |
nowはレンダリングされた次のページのみ表示されます。次の次のページでは表示されません。
ビュー側
以下のような感じで記述すればメッセージを表示できます。
1 |
<%= flash[:notice] %> |
Flashメッセージのオプション
「notice:」となっているのはFlashのキー(名前)を表しておりデフォルトでは下記のいずれかを選択できます。
- notice
- alert
- success
- danger
下記のようにすればnoticeやalert以外の任意のキーのFlashメッセージを渡すことが可能になります。
1 |
redirect_to [任意のURL], flash: [任意のキー: "Flashメッセージ内容"] |
二つ先のリクエストにメッセージを伝えるには?
下記のメソッドを使用することで次のリクエストまでメッセージを存続することが可能です。
1 |
flash.keep |
flashが表示される時間を変えるには?
flashメッセージは.alertというクラスが付与されるのでそのクラスに対してjQueryなどでアニメーションなどを設定すれば表示時間などのコントロールをすることは可能です。
この記事へのコメントはありません。