Ruby on rails 分配会话变量而不保存到数据库

Ruby on rails 分配会话变量而不保存到数据库,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试建立一个类似购物车的东西,我有一个表格,可以选择人们可能想要买多少件每种尺寸的衬衫。我计划有XXS、XS、S、M、L、XL和XXL,他们会选择每个数量并将其添加到购物车中。我能想到的最简单的方法是在“tshirt”的数据库中为每个尺码设置一个t.integer“size_???”,在用户单击“添加到购物车”后,该数字将存储在会话中,直到他们的付款获得批准,在这种情况下,该数字将保存到数据库中。之后,有人可以查看数据库,查看下了哪些订单。(这将用于定制衬衫,因此数据库中不会保存需要查看或

我正在尝试建立一个类似购物车的东西,我有一个表格,可以选择人们可能想要买多少件每种尺寸的衬衫。我计划有XXS、XS、S、M、L、XL和XXL,他们会选择每个数量并将其添加到购物车中。我能想到的最简单的方法是在“tshirt”的数据库中为每个尺码设置一个t.integer“size_???”,在用户单击“添加到购物车”后,该数字将存储在会话中,直到他们的付款获得批准,在这种情况下,该数字将保存到数据库中。之后,有人可以查看数据库,查看下了哪些订单。(这将用于定制衬衫,因此数据库中不会保存需要查看或列出的“示例”)

我的第一个问题是这是否正确。我曾想过使用“衬衫有很多尺寸”的方法,但我对它不是最熟悉的,如果我只是想获得一个数量,我觉得这可能有点过头了

我的第二个问题是:如果我有一个表单来选择每个变量的数量,那么如何将值分配给会话变量。我的第一个想法是这样一种方法:

new_order.html.erb:
<%=  form_for(:shirt, :url => {:action => 'save_to_session'}) do |f| %>
<table summary="New shirt order form">
<tr>    
    <th>Size S:</th>
</tr>
<tr>
    <td><%= f.select(:size_s, 0..99) %> </td>
</table>

  <%= submit_tag("Place order") %>

<% end %>
其中show\u session刚刚吐出会话[:shirt\u size\u s]

我犯的错误是

nil:NilClass的未定义方法“size_22”

也许这是一种禁忌,因为这似乎是一种非常简单的方法,但这不会改变会话值。如果我添加以下行以保存到会话,它会起作用,所以我想可能保存到会话没有访问@temp\u order的权限,但我仍处于学习阶段,不知道这里到底出了什么问题

session[:shirt_size_s] = 12

@temp是一个实例变量,通常用于填充页面,而不是用于检索数据。您想使用参数[:field1],其中field1将是您选择的名称。

太好了,谢谢!使用session[:shirt\u size\u s]=params[:shirt][:size\u s]时,这就成功了
session[:shirt_size_s] = 12