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中存储了一个文件,而读取的结果却是一个字符串?
如果您想对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 3.2文档通过暗示可以将Ruby数组直接存储为cookie值而在此问题上引起了一些混乱,该数组值最近通过使用JSON dump / load和随后通过更安全的JSON generate / parse进行了修复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句