无法从会话中检索哈希

时间:2015-11-18 17:03:31

标签: ruby-on-rails ruby hash session-variables

我有一个哈希:

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

我将它保存在会话中:

session[:hash_map] = hash

当我检索哈希时:

hash2 = session[:hash_map]

hash2是:

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

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

2 个答案:

答案 0 :(得分:2)

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

如何序列化的想法在这里很详细:

Can store hash in a cookie?

答案 1 :(得分:0)

我找到了一个解决方案,但我不认为这是正确的,如果我做hash2 [" a"]它工作而不是hash2 [:a]我不知道有什么区别