Vic*_*cer 6 ruby controller ruby-on-rails session-variables
我在使用会话变量时遇到问题.我有两个名为'graduate_students_controller'和'current_students_controller'的控制器.每个控制器控制不同的视图文件.我正在使用这些控制器的会话变量来存储会话信息.
这是问题所在.假设我有两个视图文件'reports/current_students_list','reports/graduate_students_list',每个由上述控制器分别控制.
现在,如果我尝试从同一个浏览器中打开这两个网页并尝试同时使用它们,我会从首次加载的页面中获得"nil object access"错误.'nil对象'指的是第一个页面应该访问的会话变量.但是,当我单独使用这两个Web应用程序中的任何一个时,它们工作正常.
所以在我看来,第一次加载的Web应用程序的会话变量.被第二次加载的网络应用程序覆盖.也许是因为第二页在第一页上存储了新的cookie?
我该如何解决?
任何建议都非常感谢.
为了澄清一点:两个控制器属于同一个Rails应用程序.我没有在两个控制器中使用相同的会话变量名称.所以我不明白他们为什么会被覆盖
我是rails的新手,我真的很感激这个问题的一些帮助.谢谢.
我不确定您是否正在运行两个应用程序,或者是指同一应用程序下的两个控制器。如果您正在查看不同的 Web 应用程序,那么我认为您在您的环境中为这些应用程序中的每一个使用了相同的名称和会话密钥。尝试更改您的 environment.rb 中的键值:
config.action_controller.session = { :key => "_myapp_session", :secret => "..." }
Run Code Online (Sandbox Code Playgroud)
如果您在同一个应用程序中使用来自两个不同控制器的相同会话变量,那么您需要编写代码来适应这一点,尽管我不建议这样做。访问会话数据时,检查 nil 值:
session[:some_key].nil?
Run Code Online (Sandbox Code Playgroud)
并确保公共代码(即在 application_controller.rb 中)不会覆盖您的值。
| 归档时间: |
|
| 查看次数: |
18249 次 |
| 最近记录: |