Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 你能把散列存储在饼干里吗?_Ruby On Rails_Ruby_Ruby On Rails 3_Cookies - Fatal编程技术网

Ruby on rails 你能把散列存储在饼干里吗?

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

有人知道我能不能在饼干里放一块土豆泥吗? 类似这样的东西: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
时,生成的对象将具有基于字符串的键

有多种可能的方法(即存储字符串并
评估该值,吓人!)。这是一个简单的方法

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类似的方式把它拉了回来。不过,谢谢你让我走上了正确的道路。我认为你不需要花括号。