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.
Writing and reading a cookie in the same request.
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.
As of 0349278f3da9f7f532330cf295eed35ede3bae66 cookie updates will persist in the current request.