Hello,
In the code below, if reset_session is called in action index,
flash[:test] is not passed to action special. I would expect that
calling reset_session would clear anything in the session/flash which
was set before reset_session was called but to have no impact on the
storage of anything in the session/flash after it reset_session was
called.
Interesting…“p flash” in action index reveals that the flash stores
appropriate contents after reset_session is called. The clearing of the
flash occurs during the redirect.
Is this a bug?
Thank you,
Ben Gribaudo
==========
Example Code
class TestController < ActionController::Base
def index
## comment this “reset_session” call and flash contents are
passed to action special
reset_session
flash[:test] = ‘This should be passed to action special.’
redirect_to :action => ‘special’
## this outputs (to console) the expected contents of the flash
p flash
end
def special
unless flash[:test]
render :text => "Flash contents cleared."
else
render :text => "Flash contents maintained."
end
end
end
==========
Test which should pass if flash contents are maintained. Won’t pass if
reset_session is called in action index.
require ‘test/test_helper’
require ‘application’
require ‘test’
class TestTest < Test::Unit::TestCase
def setup
@controller = TestController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
def test_ensure_flash_passed
get :index
assert_equal ‘This should be passed to action special.’,
flash[:test]
assert_redirected_to :action => ‘special’
end
end