Ruby на Рельсах, если / если не указано для AJAX уничтожить, когда корзина пуста - PullRequest
0 голосов
/ 17 апреля 2020

Я строю интернет-магазин. Я добавил немного функциональности AJAX для добавления, обновления и удаления товаров из моей корзины без обновления. Он отлично работает, если в корзине нет элементов и отображается cart_empty частично.

Проблема заключается в том, что я добавляю несколько элементов и могу обновлять / удалять их без обновления и наконец, я удаляю последний, и он не переключается на частичную cart_empty , а от корзин-элементов частичной остаются только пустые заголовки таблицы.

Могу ли я добавить некоторые логики c к уничтожить. js .erb ?

уничтожить. js .erb

$("#cart-item").html("<%= j render 'carts/cart_items' %>");

the show. html .erb содержит это, если только функция:

<% unless current_order.order_items.empty? %>
  <div id="cart-item">
    <%= render 'cart_items' %>
  </div>
<% else %>
  <div id="cart-empty">
    <%= render 'cart_empty' %>
  </div>
<% end %>

Возможно, мне следует каким-либо образом изменить мой контроллер, чтобы проверить, есть ли order_items в current_order ?

Спасибо!

1 Ответ

1 голос
/ 17 апреля 2020
Шаблон

A JS .erb оценивается точно так же, как шаблон HTML. Таким образом, вы можете просто добавить условие:

<% if current_order.order_items.any? %>
  $("#cart-item").html("<%= j render 'carts/cart_items' %>");
<% else %>
  $("#cart-item").html("<%= j render 'carts/cart_empty' %>");
<% end %>

Нет, это означает, что current_order является либо помощником, либо локальным пропуском к представлению.

Но вы можете реорганизовать это и pu sh условие до частичного:

# carts/cart_items.html.erb
<% if cart_items.none? %>
  <% render :cart_empty %>
<% else %>
  # ...
<% end %>

Что позволит вам просто написать:

<%= render 'carts/cart_items', cart_items: current_order.order_items %>

См .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...