【发布时间】:2009-07-12 11:48:28
【问题描述】:
我在使用会话变量时遇到问题。我有两个名为“graduate_students_controller”和“current_students_controller”的控制器。这些控制器中的每一个都控制不同的视图文件。我在这两个控制器中都使用会话变量来存储会话信息。
这就是问题所在。假设我有两个视图文件“reports/current_students_list”、“reports/graduate_students_list”,每个文件都由上述控制器单独控制。
现在,如果我尝试从同一个浏览器中打开这两个网页并尝试同时使用它们,我会从第一次加载的页面中收到“nil object access”错误。 'nil object' 指的是第一页应该访问的会话变量。但是,当我单独使用这两个 Web 应用程序中的任何一个时,它们都可以正常工作。
所以在我看来,第一个加载的网络应用程序的会话变量。被第二个加载的网络应用程序覆盖。可能是因为第二个页面比第一个页面存储了一个新的 cookie?
我该如何解决这个问题?
非常感谢任何建议。
澄清一点:这两个控制器属于同一个 Rails 应用程序。而且我没有在两个控制器中使用相同的会话变量名称。所以我不明白为什么它们会被覆盖
我是 Rails 的新手,非常感谢您对这个问题的帮助。谢谢。
【问题讨论】:
-
您使用的是哪个版本的 Rails?另外,这些控制器是在同一个 Rails 应用程序中,还是在不同的应用程序中?
-
嗨,John,我使用的 rails 版本是 2.2.2。我在 environment.rb 中指定的 gems 版本如下: ----------- # 指定当 vendor/rails 不存在时要使用的 Rails 的 gem 版本 RAILS_GEM_VERSION = '1.2.3' 除非定义? RAILS_GEM_VERSION --------------- (目前我没有在我的本地机器上使用任何新版本,因为这些是我们生产服务器上的当前设置。我想根据测试我的应用程序给他们)是的,这些控制器和视图文件属于同一个 Rails 应用程序。那么知道是什么导致了这个问题吗?谢谢约翰
-
为了清楚起见,这两个控制器正在访问的会话变量没有共同的名称。所以没有理由覆盖会话变量,除非第二次加载的网页在现有的(第一次加载的页面已经存储的)上存储了一个新的 cookie?这是我能想到的唯一合乎逻辑的原因。但是你怎么能解决这样的事情呢?有人遇到过类似的情况吗?
标签: ruby-on-rails ruby controller session-variables