【问题标题】:Rails session data - Store in a hashRails 会话数据 - 存储在哈希中
【发布时间】:2023-03-24 01:56:01
【问题描述】:

我在 Rails 视图上有一个表单,该表单将数据提交到代表购物车摘要页面的页面。

当我将数据提交到下一页时,它们会根据控制台输出如下传输。

"team"=>{"team_name"=>"Joe Blogs", "email"=>"joe@bloggs.com", "player1"=>"
3", "player2"=>"4", "player3"=>"5"}

我想将此数据存储为会话变量,即作为哈希,因此如果另一个团队被提交到摘要页面,我可以将其作为另一个哈希条目添加到会话中。即团队[1],团队[2]。 然后我可以访问 team[1].team_name 等并相应地使用它。

总之,我希望用户能够填写表格并将其放入购物车。然后他们可以回去并再次做同样的事情。最后,他们可以查看他们的购物车并删除他们不想要的任何记录,清除购物车或将他们选择的内容提交到数据库中。

我不知道该怎么做,甚至不知道它是否可能。

关于如何实现这一点的任何解决方案或建议?

【问题讨论】:

    标签: ruby-on-rails ruby session hash


    【解决方案1】:

    您可以轻松地在 Rails 会话中存储哈希。

    例子:

    class SomeController < ApplicationController
      def some_action
        session[:cart] = {"team_name"=>"Joe Blogs", "email"=>"joe@bloggs.com", "player1"=>"3", "player2"=>"4", "player3"=>"5"}
      end
    end
    

    但是,默认情况下,Rails 将会话存储在 cookie 中,并且 cookie 大小仅限于 4 KB 的数据,因此如果您的哈希将包含多个键,您将需要为会话使用其他内容存储,例如数据库。

    要将会话存储在数据库中,您可以使用 activerecord-session_store gem。

    【讨论】:

    • 感谢您的回复。因此,如果我只想访问 session[:cart] 的 team_name 部分,我还能访问它吗?此外,如果我想要多个条目,例如会话可以给我会话 [:cart][1]。抱歉,如果它们看起来很基本,但正在尝试解决如何实现这一点。
    • 是的,session[:cart] 可以保存数组和散列,所以它会返回你放在那里的任何东西。例如。 session[:cart]['team_name']
    • 太好了 session[:cart][1] 也可以保存一个哈希,如果我坐在 session[:cart ][1] = {"team_name"=>"Joe Blogs", "email"=>"joe@bloggs.com", "player1"=>"3", "player2"=>"4", "player3" =>“5”}?那将允许我在会话中存储一些“团队”?
    • 设置为session[:cart] = [{"team_name"=&gt;"Team 1"}, {"team_name"=&gt;"Team 2"}],然后session[:cart][0]将返回{"team_name"=&gt;"Team 1"}
    • 我已经能够将初始哈希分配给会话,但无法分配后续哈希。传递给会话的每个哈希可以有 5 个不同的值,所以我怎么能看到如果 session[:cart][x] 存在,那么将它放在下一个空会话中,其中 x 是最后一个会话存储。不确定这是否可能?然后,如果用户决定删除该哈希,我希望能够删除 session[:cart][x]?
    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    相关资源
    最近更新 更多