传递表单中的属性

时间:2013-01-18 07:02:17

标签: ruby-on-rails ruby

所以我有类:产品,购物车和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

我的第二个问题是我想要一个链接而不是一个按钮 - 我希望能够通过我的表格中的第四行(中间列表项)这样的链接来实现这一点 - 是否有属性我可以用来替换提交按钮吗?

谢谢!

1 个答案:

答案 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单击处理程序在单击链接时提交表单。这应该是它自己的问题。