flash
railsのコントローラとビューで使えるflashは、自動クリア機能付きのセッションみたいなものです。
flash[:notice] = 'このメッセージは次のアクションが実行された後消えます'
通常redirect_to と合わせて使用するもので、リダイレクトされたアクションでflash[:notice]には値が入っていて、そこでrenderして、その後何らかのアクションが実行された時にはflash[:notice]はnilになります。
これが基本的な使い方だと思うのですが、renderする際のエラーメッセージの表示にも便利なので、リダイレクトしない場合でも使います。その時にはこんな感じで使います。
flash.now[:notice] = 'このメッセージはこのアクションが実行された後消えます'
逆にリダイレクトした先で、さらにリダイレクトする場合はこんな感じ
# 最初のアクション flash[:notice] = 'このメッセージは次のアクションが実行された後消えます' redirect_to :action => 'an_action' # 次のアクション(an_action) flash.keep redirect_to :action => 'another_action'
っていう風にするとanother_actionでは、flash[:notice]には値が入っています。
これでflashの使い方は正しいと思うんだけど、変だよ!って思うところがあったら教えてください。