gpt4 book ai didi

ruby-on-rails - 分配 session 变量而不保存到数据库

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:03 25 4
gpt4 key购买 nike

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

我的第一个问题是这是否正确。我想过使用“Shirts has_many Sizes”方法,但我不是最熟悉它,如果我想要实现的只是获得一个数量,我觉得这可能有点矫枉过正。

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

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 %>

在 Controller 端

  def new_order
@temp_order = Shirt.new
@temp_order.size_s = 0
end

def save_to_session
session[:shirt_size_s] = @temp_order.size_s
redirect_to(:action => 'show_session')
end

def show_session

end

show_session 只是吐出 session [:shirt_size_s]

我得到的错误是

undefined method `size_22' for nil:NilClass

也许这是一个禁忌,因为它似乎是一种非常简单的方法,但这不会改变 session 值。如果我将以下行添加到 save_to_session 它会起作用,所以我想 save_to_session 可能无法访问@temp_order,但我仍处于学习阶段并且不完全知道这里出了什么问题。

session[:shirt_size_s] = 12

最佳答案

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

关于ruby-on-rails - 分配 session 变量而不保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286863/

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