2

这是最奇怪的事情。当我昨天运行 Rails WEBrick 调试器时,我可以做类似的事情

cookies[uid] = s.session_id

其中 'uid' 是一个传递的参数,其中包含一个用户 ID,然后期望

cookies[uid]

把我还给我,说:

29b93443d9ec18168a26e1ab12957b0dd0b799ff

今天,我总是返回“零”。我可以很好地读取现有值。中列出的任何键

cookies.keys

工作得很好。

有没有人对此行为有可能的解释。这非常令人抓狂,谷歌搜索还没有得到答案。

4

2 回答 2

4

原始提问者,在这里。事实证明,我可以设置那些 cookie。问题是当你输入

cookies[:key]

在调试器中,它似乎总是为您提供从浏览器读取的 cookie 的值。我不知道同时该值存储在哪里,但检查浏览器中的 cookie 可以确认我的更改确实存在。有用的是,cookies[:key] 返回赋值的值,所以你可以做类似的事情

@future_value = cookies[:key] = {
                                 :value => 'new value',
                                 :expires => @really_soon
                                }

我不知道是什么让我觉得我以前可以看到它们!

于 2009-01-04T09:26:37.020 回答
1

此外,您需要使用字符串而不是符号来读取 cookie,因为 Rails 在设置键时会将它们转换为字符串。

cookies[:key] = "value"
cookies[:key]  # => nil
cookies['key'] # => "value"
于 2009-01-23T22:52:44.387 回答