【復習】Railsのflashの使用方法

Railsではviewで一時的にテキストを表示するするために、flashというハッシュ形式のオブジェクトが設定されている。

flashkeyにはデフォルトでnoticealertが設定されているが、add_flash_typeskeyを追加できる。

add_flash_types :info, :warning  # %i(info warning)のように、%記法は使えない?

add_flash_typesを記入することでflashメッセージを1行で記載できる

# before
flash[:info] = 'hoge'
redirect_to root_url

redirect_to root_url, flash: { info: 'hoge' }  #上と同じ

# after
redirect_to root_url, info: 'hoge'

redirect_toでは指定したpathにルーティング⇨コントローラ⇨viewと画面を遷移させているので、さらに次のviewではflashメッセージは表示されない。対してrenderではaction名に対応したviewを表示させているので、さらに次のviewでもflashメッセージは表示される。
 ⇨renderではflash.now[:info]とすることで現在の表示に対してflashを行う

flash.now[:info] = 'hoge'
render action: :new