gpt4 book ai didi

ruby-on-rails - rails : How can you access session variables using multiple controllers?

转载 作者:数据小太阳 更新时间:2023-10-29 07:07:22 25 4
gpt4 key购买 nike

我在使用 session 变量时遇到问题。我有两个名为“graduate_students_controller”和“current_students_controller”的 Controller 。这些 Controller 中的每一个都控制不同的 View 文件。我在这两个 Controller 中使用 session 变量来存储 session 信息。

问题来了。假设我有两个 View 文件“reports/current_students_list”、“reports/graduate_students_list”,每个文件都由上述 Controller 单独控制。

现在,如果我尝试从同一浏览器中打开这两个网页并尝试同时使用它们,我会从第一个加载的页面中收到“无对象访问”错误。 “无对象”指的是第一页应该访问的 session 变量。但是,当我单独使用这两个 Web 应用程序中的任何一个时,它们都能正常工作。

所以在我看来,首先加载的网络应用程序的 session 变量。正在被第二次加载的网络应用程序覆盖。可能是因为第二页在第一页上存储了一个新的 cookie?

我该如何解决这个问题?

非常感谢任何建议。

再澄清一点:这两个 Controller 属于同一个 Rails 应用程序。而且我没有在两个 Controller 中使用相同的 session 变量名称。所以我不明白为什么它们会被覆盖

我是 Rails 的新手,非常感谢能为我解决这个问题。谢谢。

最佳答案

我不确定您是在运行两个应用程序,还是指的是同一应用程序下的两个 Controller 。如果您正在查看不同的 Web 应用程序,那么我认为您在您的环境中为这些应用程序中的每一个使用了相同的名称和 session key 。尝试更改环境中的键值。rb:

config.action_controller.session = { :key => "_myapp_session", :secret => "..." }

如果您在同一个应用程序中使用来自两个不同 Controller 的同一个 session 变量,那么您将需要编写代码来适应这种情况,但我不建议这样做。访问 session 数据时,检查 nil 值:

session[:some_key].nil?

并确保通用代码(即在 application_controller.rb 中)不会覆盖您的值。

关于ruby-on-rails - rails : How can you access session variables using multiple controllers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com