我的回购:https://github.com/Gtar69/artstore_hw2 =>这是我的购物车项目
现在我想在carts / index.html中输入一个值来更改cart_item数量。
不知道如何在rails
中做到这一点在典型的PHP中,它就像
<form action="backend.php">
<td><input type="number" name= "kobe">
<input type="submit" value="submit/>
</td>
但是,我想简化编码结构而不是使用表单。
我的想法是=&gt;视图/推车/ index.html中
<tbody>
<% current_cart.items.each do |product| %>
<tr>
<td><%= render_product_photo(product.default_photo) %></td>
<td>
<%= link_to(product.title, admin_product_path(product)) %>
</td>
<td><%= product.price %></td>
<td>
<input type="number" name= "kobe" value = <%= CartItem.where(product_id: product.id).take!.count%>>
<input type="submit" value="shala">
</td>
<td><%= link_to("改變數量", change_item_quantity_carts_path(:product_id => product.id, :count => 2),
:method => :post , :class => "btn btn-primary btn-lg btn-danger") %></td>
<td><%= link_to("刪除物品", delete_item_carts_path(:product_id => product.id) , :method => :post, :class => "btn btn-primary btn-lg btn-danger") %></td>
</tr>
<% end %>
</tbody>
传递&#34; kobe&#34;变量到carts_controller
def change_item_quantity
product = Product.find(params[:product_id])
# :count => 2
current_cart.change_cart_item_quantity(product ,params[:kobe])
redirect_to carts_path
end
并在model / cart.rb中进行后端计算
def change_cart_item_quantity(product, count)
#改變cart_item中的數量
c= CartItem.where(product_id: product.id).take!
c.count = count
c.save
end
我仍然在如何通过&#34; kobe&#34;到控制器。有任何想法吗?
提前致谢。
答案 0 :(得分:0)
请参阅guides.rubyonrails.org/form_helpers.html
我用过
<td>
<%= form_tag("/carts/change_item_quantity", method: "post") do%>
<%= label_tag(:q, "改變數量") %>
<%= number_field_tag(:kobe, CartItem.where(product_id: product.id).take!.count)%>
<%= hidden_field_tag(:product_id, product.id)%>
<%= submit_tag("Change") %>
<% end %>
</td>
通过这种方式,我可以将我需要的任何参数传递给控制器。