Я работаю над книгой Agile Web Development With Rails и застрял в одном из дополнительных упражнений.Цель состоит в том, чтобы удалить элементы из корзины покупок, и, хотя я могу сделать это с отдельными элементами, когда имеется более одного элемента, он в настоящее время стирает их все.Я хочу, чтобы кнопка «Удалить элемент» удаляла только один из нескольких элементов.
В данный момент корзина выглядит так:
элемент 1 |количество: 1
пункт 2 |количество: 3
Поэтому, когда я нажимаю кнопку удаления элемента на элементе 2, в настоящее время он удаляет все три элемента, а не только один.Я пытаюсь сделать это, уменьшив атрибут количества элемента, если он больше единицы, а не удаляя его, однако в настоящее время он ничего не делает.Он по-прежнему удаляется, если количество равно 1. Что я здесь делаю неправильно?
из line_items_controller.rb
def destroy
@cart = @line_item.cart
if @line_item.quantity > 1
@line_item.quantity-=1
else
@line_item.destroy
end
respond_to do |format|
format.html { redirect_to @cart }
format.json { head :no_content }
end
end
cart.show.erb
<p id="notice"><%= notice %></p>
<h2>Your Cart</h2>
<table>
<% @cart.line_items.each do |item| %>
<tr>
<td><%= item.quantity %> × </td>
<td><%= item.product.title %></td>
<td class="item_price"><%= number_to_currency(item.total_price) %></td>
<td><%= button_to "Remove Item", item, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
<tr class="total_line">
<td colspan="2">Total</td>
<td colspan="total_cell"><%= number_to_currency(@cart.total_price) %></td>
</tr>
</table>
<%= button_to "Empty Cart", @cart, method: :delete, data: { confirm: 'Are You Sure?' } %>