ENV:
Rails 3.2.15
ruby 1.9.3p194(2012-04-20修订版35410)[x86_64-darwin12.2.0]
我在控制器中设置cookie并从helper方法读取它,两个结果不一样。为什么呢?
# in controller
cookies[:"position"] = { :value => [ 100,200 ], :expires => 1.years.from_now }
# read it same time, it display value is an array [100, 200]
# But I read this cookies in another request, it display "100&200"
# in helper
module WelcomeHelper
def get_position
cookies[:"position"]
end
end
```
get_position
方法返回100&200
我在哪里可以找到一些文件?我发现在代码中,它被描述的数据可以直接存储在cookie中并直接读取它:https://github.com/rails/rails/blob/v3.2.15/actionpack/lib/action_dispatch/middleware/cookies.rb#L45,但为什么我在cookie中存储arry并且读取的结果是字符串?
答案 0 :(得分:0)
如果您想为Cookie使用非字符串值,请先将它们转换为JSON。
# using the preferred 1.9 hash syntax and no need to quote "position"
cookies[:position] = { value: JSON.generate([ 100,200 ]), expires: 1.years.from_now }
检查Rails 4.1 documentation on Cookies。
Rails 3.2文档引起了轻微的混淆on that issue,暗示Ruby数组可以stored directly作为最近修复by using JSON dump/load并随后by the safer JSON generate/parse修复的Cookie值。< / p>