Rails会话数据 - 存储在哈希中

时间:2015-11-15 23:26:00

标签: ruby-on-rails ruby session hash

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

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

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

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

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

我无法找到如何做到这一点,或者甚至可能。

有关如何实施此问题的任何解决方案或建议?

1 个答案:

答案 0 :(得分:5)

您可以在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千字节的数据,因此如果您的哈希将包含多个键,则需要使用其他内容进行会话存储,例如数据库。

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