Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can store hash in a cookie?

Anyone know if I can put a hash in the cookie? Something like this: cookies [: test] = {: top => 5,: middle => 3,: bottom => 1}

Thanks

like image 399
Arnaldo Jr Avatar asked Nov 18 '13 19:11

Arnaldo Jr


2 Answers

With Rails 4.1 I had to use the parentheses like this. Without that it gave an error.

cookies[:test] = JSON.generate({a: 1, b: "2", hello: "world"})
like image 119
Indika K Avatar answered Oct 13 '22 12:10

Indika K


I woud look into serializing the hash to store it. Then deserialize it to retrieve it.

When you serialize a hash, the result will be an encoded string. This string can be decoded to get the original object back.

You could use YAML or JSON for this. Both are nicely supported in Ruby.


A YAML example

require "yaml"

cookies[:test] = YAML::dump {a: 1, b: "2", hello: "world"}
# => "---\n:a: 1\n:b: '2'\n:hello: world\n"

YAML::load cookies[:test]
# => {a: 1, b: 2, c: "world"}

A JSON example

require "json"

cookies[:test] = JSON.generate {a: 1, b: "2", hello: "world"}
# => '{"a":1,"b":"2","hello":"world"}'

JSON.parse cookies[:test]
# => {"a"=>1, "b"=>"2", "hello"=>"world"}

Note: when using JSON.parse, the resulting object will have string-based keys

like image 15
maček Avatar answered Oct 13 '22 12:10

maček