1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

備忘録 Flashメッセージを使いこなそう

Posted at

Flashメッセージで次のリクエストにデータを伝える

railsのredirect_toメソッドにflashを使うことで次のリクエストにデータを伝えることができる。(同じリクエスト内でもできるが後述)

redirect_to リダイレクト先のURL, notice: 'ここのデータを送れるよ!'

次のように2行で書いても、同じ。

flash[:notice] = 'ここのデータを送れるよ!'
redirect_to リダイレクト先のURL

redirect_toのオプションに渡せるflashのキーはデフォルトでは:noticeと:alertのみとなっている。
次のようにflashキーの値にオリジナルのデータをハッシュで渡すことでプチカスタマイズができる。

redirect_to リダイレクト先のURL, flash: {hogehoge: 'ここのデータを送れるよ!'}
#=> 次のリクエストではflash.hogehogeで参照できる

また、noticeとalertは以下のようにメソッドの形でデータを渡すこともできる。

flash.notice = 'ここのデータを送れるよ!'
flash.alert = 'ここのデータを送れるよ!'

redirect_toすると次のリクエストに移行するが、
同じリクエスト内にデータを伝えたいこともありますよね!(renderでエラーメッセージを表示するなど)
そんな時は

flash.now(:notice) = '今のリクエストが終わるまでデータを保持できるよ!'
flash.now(:alert) = '今のリクエストが終わるまでデータを保持できるよ!'

とすることで同リクエスト内でデータを参照できます。

flash.keep(:notice) = '次の次までデータを保持できるよ!'
flash.keep(:alert) = '次の次までデータを保持できるよ!'

flash.keepはredirectで送ったリクエストの次のリクエストまでデータを保持できます。

flashメッセージの表示期間(現在のリクエストor次回のリクエストorその先)によって上記を使い分けましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?