diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/cookies.rb | 8 | ||||
-rw-r--r-- | actionpack/test/controller/cookie_test.rb | 11 |
3 files changed, 18 insertions, 3 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 917303797f..83e4a492ed 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Allow you to delete cookies with options. Closes #3685 [josh, Chris Wanstrath] + * Allow you to render views with periods in the name. Closes #8076 [norbert] render :partial => 'show.html.erb' diff --git a/actionpack/lib/action_controller/cookies.rb b/actionpack/lib/action_controller/cookies.rb index 52423aa61b..d337491ecb 100644 --- a/actionpack/lib/action_controller/cookies.rb +++ b/actionpack/lib/action_controller/cookies.rb @@ -62,9 +62,11 @@ module ActionController #:nodoc: end # Removes the cookie on the client machine by setting the value to an empty string - # and setting its expiration date into the past - def delete(name) - set_cookie("name" => name.to_s, "value" => "", "expires" => Time.at(0)) + # and setting its expiration date into the past. Like []=, you can pass in an options + # hash to delete cookies with extra data such as a +path+. + def delete(name, options = {}) + options.stringify_keys! + set_cookie(options.merge("name" => name.to_s, "value" => "", "expires" => Time.at(0))) end private diff --git a/actionpack/test/controller/cookie_test.rb b/actionpack/test/controller/cookie_test.rb index 5bab99fdca..44023b0791 100644 --- a/actionpack/test/controller/cookie_test.rb +++ b/actionpack/test/controller/cookie_test.rb @@ -31,6 +31,11 @@ class CookieTest < Test::Unit::TestCase cookies.delete("user_name") end + def delete_cookie_with_path + cookies.delete("user_name", :path => '/beaten') + render_text "hello world" + end + def rescue_action(e) raise unless ActionController::MissingTemplate # No templates here, and we don't care about the output end @@ -85,4 +90,10 @@ class CookieTest < Test::Unit::TestCase assert_equal "david", jar["user_name"] assert_equal nil, jar["something_else"] end + + def test_delete_cookie_with_path + get :delete_cookie_with_path + assert_equal "/beaten", @response.headers["cookie"].first.path + assert_not_equal "/", @response.headers["cookie"].first.path + end end |