所以我有类:产品,购物车和LineItems - 标准关系(产品和harts有很多行项目,反之亦然)我和行项目的属性之一是大小。当您更详细地展示产品时,有一个表格要求您选择尺寸,表格如下所示(选择框中有任意值)
<%= form_for(:line_item, :url => {:controller => "line_items", :action => 'create', product_id: @product.id }) do |f| %>
<ul>
<li>Size: <%= f.select(:size, 0..99) %></li>
<li><%= link_to 'Add to Cart', line_items_path(product_id: @product.id), :method => :post %></li> <!-- This comes up later in the question -->
<li><%= submit_tag "Add to Cart" %></li> <!-- using this Add to Cart button for now -->
</ul>
<% end %>
我的第一个问题是解决问题。在line_items的创建定义中,我有以下两行,问题是无论选择何种大小,它都将其记录为1.即使我选择0,即使我选择99.那么我的逻辑缺陷是什么这里?我确定我犯了一个很大的错误,我只是不知道我做错了什么才能正确地找到答案
@temp_size = params[:line_item]
@line_item.size = @temp_size.size
我的第二个问题是我想要一个链接而不是一个按钮 - 我希望能够通过我的表格中的第四行(中间列表项)这样的链接来实现这一点 - 是否有属性我可以用来替换提交按钮吗?
谢谢!
答案 0 :(得分:1)
第一个问题:
params[:line_item]
是一个哈希,包含来自提交表单的输入字段的数据。
@temp_size.size
正在调用Hash#size
,它返回哈希中键值对的计数。由于您的表单只有一个输入字段:size
,@temp_size.size
将始终返回1,无论其值如何。
要分配:size
输入字段的值,请执行以下操作:
@temp_size = params[:line_item][:size]
第二个问题:
您可以使用CSS to change the appearance of the submit button。您还可以使用Javascript单击处理程序在单击链接时提交表单。这应该是它自己的问题。