无法从会话中检索哈希

Unable to retrieve hash from session

我有一个散列:

hash = {:a=>1, :b=>2}

我保存在会话中:

session[:hash_map] = hash

当我检索哈希时:

hash2 = session[:hash_map]

hash2 是:

{:a=>1, :b=>2}

hash2[:a]hash2[:b] return nil。知道为什么会这样吗?

您只能将字符串存储在会话哈希中,除非您对其进行序列化或反序列化。会话存储通常是 cookie。您可能可以使用 eval(hash2) 来获取散列 - 至少使用您发布的散列 - 如果有 lambda 或其他它不会工作。

这里详细介绍了如何序列化的想法:

Can store hash in a cookie?

我找到了解决方案,但我认为如果我使用 hash2["a"] 是正确的解决方案,它可以代替 hash2[:a] 我不知道有什么区别