0

所以我有这些类:产品、购物车和 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的create定义中我有以下两行,问题是不管选择的大小,它都记录为1。即使我选择0,即使我选择99。那么我的逻辑缺陷是什么这里?我确定我犯了一个很大的错误,我只是不知道自己做错了什么,无法正确搜索答案

@temp_size = params[:line_item]
@line_item.size = @temp_size.size

我的第二个问题是我想要一个链接而不是按钮-我希望能够使用表单中的第 4 行(中间列表项)之类的链接来执行此操作-我可以使用哪些属性替换提交按钮?

谢谢!

4

1 回答 1

1

第一个问题:

params[:line_item]是一个哈希,包含来自提交表单的输入字段的数据。

@temp_size.size正在调用Hash#size它返回哈希中键值对的计数。由于您的表单只有一个输入字段,:size,@temp_size.size将始终返回 1 而不管它的值。

要分配:size输入字段的值,请执行以下操作:

@temp_size = params[:line_item][:size] 

第二个问题:

您可以使用CSS 来更改提交按钮的外观。您还可以使用 Javascript 单击处理程序在单击链接时提交表单。这应该是它自己的问题。

于 2013-01-18T07:22:33.383 回答