diff --git a/actionpack/lib/action_controller/cookies.rb b/actionpack/lib/action_controller/cookies.rb index 78815b7bc4..d56096818d 100644 --- a/actionpack/lib/action_controller/cookies.rb +++ b/actionpack/lib/action_controller/cookies.rb @@ -4,14 +4,14 @@ module ActionController #:nodoc: # itself back -- just the value it holds). Examples for writting: # # cookies["user_name"] = "david" # => Will set a simple session cookie - # cookies["login"] = { "value" => "XJ-122", "expires" => Time.now + 360} # => Will set a cookie that expires in 1 hour + # cookies["login"] = { :value => "XJ-122", :expires => Time.now + 360} # => Will set a cookie that expires in 1 hour # # Examples for reading: # # cookies["user_name"] # => "david" # cookies.size # => 2 # - # All the options for setting cookies are: + # All the option symbols for setting cookies are: # # value:: the cookie's value or list of values (as an array). # path:: the path for which this cookie applies. Defaults to the root of the application. @@ -41,6 +41,7 @@ module ActionController #:nodoc: def []=(name, options) if options.is_a?(Hash) + options.each { |key, value| options[key.to_s] = value } options["name"] = name else options = [ name, options ] diff --git a/actionpack/test/controller/cookie_test.rb b/actionpack/test/controller/cookie_test.rb index 1bd17c5c2f..41dc3393f1 100644 --- a/actionpack/test/controller/cookie_test.rb +++ b/actionpack/test/controller/cookie_test.rb @@ -17,6 +17,11 @@ class CookieTest < Test::Unit::TestCase render_text "hello world" end + def authenticate_for_fourten_days_with_symbols + cookies["user_name"] = { :value => "david", :expires => Time.local(2005, 10, 10) } + render_text "hello world" + end + def set_multiple_cookies cookies["user_name"] = { "value" => "david", "expires" => Time.local(2005, 10, 10) } cookies["login"] = "XJ-122" @@ -52,6 +57,11 @@ class CookieTest < Test::Unit::TestCase assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"] end + def test_setting_cookie_for_fourteen_days_with_symbols + @request.action = "authenticate_for_fourten_days" + assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"] + end + def test_multiple_cookies @request.action = "set_multiple_cookies" assert_equal 2, process_request.headers["cookie"].size