module

ActionController::Cookies

Cookies are read and written through ActionController#cookies. The cookies being read are what were received along with the request, the cookies being written are what will be sent out with the response. Cookies are read by value (so you won’t get the cookie object itself back — just the value it holds). Examples for writing:

  cookies[:user_name] = "david" # => Will set a simple session cookie
  cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now }
  # => Will set a cookie that expires in 1 hour

Examples for reading:

  cookies[:user_name] # => "david"
  cookies.size         # => 2

Example for deleting:

  cookies.delete :user_name

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.
  • domain - the domain for which this cookie applies.
  • expires - the time at which this cookie expires, as a Time object.
  • secure - whether this cookie is a secure cookie or not (default to false).
                      Secure cookies are only transmitted to HTTPS servers.
    
  • http_only - whether this cookie is accessible via scripting or only HTTP (defaults to false).

Files

  • actionpack/lib/action_controller/cookies.rb

2Notes

Writing and reading a cookie in the same request.

jmcnevin · Jul 29, 20088 thanks

Note that when setting the value of a cookie, the new value won't be accessible until the next page request. In this way, the cookies hash cannot be used in the same manner as the session hash.

For example:

given that cookies[:temporary_data] was set to 'foo' in the previous request

cookies[:temporary_data] = 'bar' p cookies[:temporary_data] # => 'foo'

Writing and reading a cookie in the same request.

Olly · Jun 3, 20093 thanks

As of 0349278f3da9f7f532330cf295eed35ede3bae66 cookie updates will persist in the current request.