可以在cookie中存储哈希吗?

Arn*_* Jr 10 ruby cookies ruby-on-rails ruby-on-rails-3

任何人都知道我是否可以在cookie中添加哈希值?像这样:cookies [:test] = {:top => 5,:middle => 3,:bottom => 1}

谢谢

mač*_*ček 14

我想看看序列化哈希来存储它.然后反序列化它以检索它.

序列化哈希时,结果将是编码字符串.可以对此字符串进行解码以返回原始对象.

您可以使用YAML或JSON.两者都在Ruby中得到很好的支持.


一个YAML的例子

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"}
Run Code Online (Sandbox Code Playgroud)

一个JSON示例

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"}
Run Code Online (Sandbox Code Playgroud)

注意:使用时JSON.parse,生成的对象将具有基于字符串的键


Ind*_*a K 5

在 Rails 4.1 中,我必须像这样使用括号。如果没有它,它就会出错。

cookies[:test] = JSON.generate({a: 1, b: "2", hello: "world"})
Run Code Online (Sandbox Code Playgroud)