我是Ruby on Rails的新手。我为一个样品网上商店建了一个购物车,我有一个可以添加商品的购物车。如果我想增加数量,我必须返回产品页面并重新添加。我必须删除产品的唯一方法是单击“清空购物车”按钮以删除所有内容。
我正在尝试找到一种方法,将数量显示在某种数字选择器中,并将当前数量设置为默认值。如果在购物车内更改了数量,则可能需要刷新页面,以便也可以更新总价格。如果数量设置为0,则理想情况下将从购物车中删除订单项。
在谈到如何实际实现这些功能时,我迷失了方向。任何帮助将不胜感激。
这是我的/carts/show.html.erb文件:
<p id="notice"><%= notice %></p>
<h2>My Cart</h2>
<table class="table table-responsive table-striped">
<thead>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Total Price</th>
</tr>
<tbody>
<%= render(@cart.line_items) %>
<tr>
<td>Total</td>
<td><%= number_to_currency(@cart.total_price) %></td>
<td></td>
</tr>
</tbody>
</thead>
</table>
<%= button_to 'Empty Cart', @cart, method: :delete, data: {confirm: 'Are you sure you want to empty your cart?'}, :class => 'btn btn-danger' %>
<br>
<%= button_to "Checkout", new_order_path, method: :get, :class => 'btn btn-success' %>
<br>
<%= link_to 'Back', products_path, :class => 'btn btn-primary' %>
这是我的/line_items/_line_item.html.erb文件:
<tr>
<td><%= link_to line_item.product.product_name, line_item.product %></td>
<td><%= line_item.quantity %></td>
<td><%= number_to_currency(line_item.total_price) %></td>
</tr>
答案 0 :(得分:0)
有许多不同的方法可以实现。我想最简单的方法是在购物车控制器中创建一个方法
说......
def update_quantity
@line_item.update_attribute(:quantity)
end
然后在您的视图中,您可以构建一个from选择器
<%= form_for line_item do |f| %>
<%= f.select_tag :quantity, 'options_for_quantity' %>
<%= f.submit, method: :patch %>
<% end %>
这应该可以处理您正在寻找的大部分内容。