可以在cookie中存储哈希值吗?
任何人都知道我是否可以在cookie中添加哈希值? 像这样:cookies [:test] = {:top => 5,:middle => 3,:bottom => 1}
谢谢
我会考虑序列化哈希来存储它。 然后反序列化它以检索它。
序列化哈希时,结果将是编码字符串。 可以对此字符串进行解码以返回原始对象。
您可以使用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"}
一个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"}
注意:使用JSON.parse
,生成的对象将具有基于字符串的键
使用Rails 4.1我必须使用这样的括号。 没有它就会出错。
cookies[:test] = JSON.generate({a: 1, b: "2", hello: "world"})
有许多方法可以实现(即存储字符串并eval
该值,SCARY!)。 这是一种简单的方法。
cookies[:test_top] = 5 cookies[:test_middle] = 3 cookies[:test_bottom] = 1
您还可以转换为JSON,然后在加载cookie时解析它。
较新版本的Rails包括使用会话对象自动序列化。