Ruby on rails 你能把散列存储在饼干里吗?
有人知道我能不能在饼干里放一块土豆泥吗? 类似这样的东西:cookies[:test]={:top=>5,:middle=>3,:bottom=>1}Ruby on rails 你能把散列存储在饼干里吗?,ruby-on-rails,ruby,ruby-on-rails-3,cookies,Ruby On Rails,Ruby,Ruby On Rails 3,Cookies,有人知道我能不能在饼干里放一块土豆泥吗? 类似这样的东西:cookies[:test]={:top=>5,:middle=>3,:bottom=>1} 谢谢我会考虑序列化散列来存储它。然后反序列化它以检索它 序列化哈希时,结果将是编码字符串。可以解码此字符串以恢复原始对象 您可以使用YAML或JSON来实现这一点。Ruby很好地支持这两者 YAML示例 require "yaml" cookies[:test] = YAML::dump {a: 1, b: "2", hello: "worl
谢谢我会考虑序列化散列来存储它。然后反序列化它以检索它 序列化哈希时,结果将是编码字符串。可以解码此字符串以恢复原始对象 您可以使用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
时,生成的对象将具有基于字符串的键有多种可能的方法(即存储字符串并评估该值,吓人!)。这是一个简单的方法
cookies[:test_top] = 5
cookies[:test_middle] = 3
cookies[:test_bottom] = 1
您还可以转换为JSON,然后在加载cookie时解析它
较新版本的Rails包括使用session对象自动序列化。对于Rails 4.1,我不得不使用这样的括号。没有这一点,它就出了一个错误
cookies[:test] = JSON.generate({a: 1, b: "2", hello: "world"})
我将尝试这种方式,看看它是否对我有效,非常感谢这对我根本不起作用:(我收到了关于“:”字符的投诉(语法错误,意外的“:”,预期的“}”
)你知道为什么吗?我试过你的YAML和JSON建议,但都抱怨同一个问题。FWIW,我做的有点不同,这对我来说很好。cookies[:my_cookie]={value:ActiveSupport::JSON.encode(my_对象),expires:some_time}
我用与decode类似的方式把它拉了回来。不过,谢谢你让我走上了正确的道路。我认为你不需要花括号。