Как я могу связать данные с частичным рендерингом через Ajax? - PullRequest
0 голосов
/ 19 июня 2019

Я рендеринг каталога товаров с использованием AJAX. Коллекции имеют подкатегории, чьи продукты отображаются как частичные AJAX. Я пытался ссылаться на эти страницы из других частей сайта через обычные ссылки (без remote: true) и, очевидно, это не сработало, поскольку действие show в моем контроллере подкатегорий отвечало только на js.

Я попытался решить эту проблему, добавив format.html в контроллер подкатегорий и создав файл show.html.erb в дополнение к _show.html.erb и show.js.erb. Подкатегории / шоу точно такие же, как коллекции / шоу, и ссылки AJAX работают нормально. Но он выводит партиалы других подкатегорий из одного URL, что выглядит запутанно, а также повторяет много кода.

Есть ли способ, с помощью которого я могу ссылаться на страницу коллекции из других частей сайта и частично отображать правильные подкатегории? Как лучше всего справиться с такой ситуацией?

subcategories_controller.rb

def show
  @subcategory = Subcategory.friendly.find(params[:id])
  @collection = @subcategory.collection

  respond_to do |format|
    format.js
    format.html
  end
end

коллекция / show.html.erb

<% @collection.subcategories.each do |subcategory| %>
    <%= link_to subcategory.name, [collection, subcategory], remote: true %>
<% end %>

<div class="product-grid">
</div>

подкатегории / show.js.erb

document.querySelector(".product-grid").innerHTML = "<%= escape_javascript(render partial: 'show', locals: { subcategory: @subcategory } ) %>";

подкатегории / show.html.erb

<!-- same as collections/show.html.erb !-->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...