【问题标题】:session['value'] = nil doesn't seem to stay empty in Rails 3?session['value'] = nil 在 Rails 3 中似乎没有保持空白?
【发布时间】:2011-06-18 15:00:44
【问题描述】:

我的控制器尝试将会话值设置为零。在控制器中,它可以工作,但是我重新加载浏览器(不退出),会话值又回来了?

我怎样才能让它清空并清空?即使我将它设置为 nil,浏览器是否仍会存储该会话?

【问题讨论】:

  • 你打电话给session['value]' = nil还是session = nil
  • 第一个 -- 我不想杀死其他会话变量....
  • 那么您提供的代码应该是正确的。你确定它被调用了吗?
  • 是的,我在调试器中单步执行... :(
  • 当我将现有会话设置为新值时,我遇到了同样的问题。重新加载时,原始会话值正在加载。我认为 Kelvin 关于新价值没有进入浏览器是正确的,但我不知道为什么会这样。 @Angela,你有没有找到这个问题的答案

标签: ruby-on-rails session-variables


【解决方案1】:

将变量设置为 nil 会保留会话。 尝试调用

reset_session

在您的控制器中摆脱整个会话。

尽管如此,即使将值设置为 nil,它也不应该出现在您的下一个请求中。确保您没有将其重新设置,例如在 before_filter 中。

【讨论】:

  • 我想保留会话,只是那个值。我用它来检查来人是否是通过点击邀请链接来的
  • 在这种情况下,您的代码确实是正确的。一定有其他问题。您能否提供其他信息,例如 - 您使用哪个会话存储(Cookie 或 ActiveRecord) - 控制器代码设置值为 nil - 用于检查下一个请求中的值的控制器代码
【解决方案2】:

如果您为会话使用 cookie 存储,则更改后的会话可能无法进入浏览器。如果是这种情况,浏览器在 cookie 中仍然有旧值。当页面重新加载时,浏览器会将cookie发送到rails,rails会恢复原来的值。

如果没有看到您的控制器操作,很难说更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多