在Rails购物车中更改数量

时间:2017-07-05 22:28:24

标签: ruby-on-rails ruby e-commerce shopping-cart

我是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>

1 个答案:

答案 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 %>

这应该可以处理您正在寻找的大部分内容。