おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails2.3からflashの仕様が変わってる

flashに入れたオブジェクトは、「次のアクションまで有効」だったはずなのですが、Rails2.3からは「次にflashにアクセスされるまで有効」に変更になっているようです。

下記のようなコントローラで、indexアクションにアクセスすると、index2を経由してindex3に飛びます。

class MainController < ApplicationController
  def index
    flash[:hoge] = "hoge"
    redirect_to :action => "index2"
  end

  def index2
    redirect_to :action => "index3"
  end

  def index3
  end
end

index3で下記のようにflashを表示するように書いても、通常は表示されないはずなのですが、Rails2.3.2で試したところ"hoge"と表示されてしまいました。

<%= flash[:hoge] %>

ドキュメントを見ても、「flashは次のアクションまで」と書いてあるようなので、これはバグなんでしょうかね?