AJAX без action.js.erb + Webpacker - PullRequest
       8

AJAX без action.js.erb + Webpacker

0 голосов
/ 25 февраля 2019

Я недавно интегрировал Webpacker в свое приложение, и кажется, что предопределенный способ больше не использует action.js.erb для обработки отправленной формы AJAX.Мое приложение - чисто рендеринг на стороне сервера, без js-фреймворка, отличного от StimulusJS.Нет рендеринга на стороне клиента

Почему я думаю, что я не должен больше использовать action.js.erb?Поскольку эти файлы находятся в папке views, это не управляется Webpacker.Поэтому я думаю, что это не так.Поскольку я не нашел никакой официальной документации, это всего лишь предположение.

Если это предположение реально, это означает, что я должен использовать Rails-ujs обработчики событий как в руководстве дляобрабатывать ответ на стороне клиента.Для этой цели я бы хотел, чтобы серверная часть отправляла фрагменты HTML, которые были бы введены в DOM каким-либо обработчиком.Но есть пункт, который я не понимаю.Давайте рассмотрим пример:

Моя форма:

<%= form_with url: missions_path, method: :get do |f| %>
    <!-- Some stuff
<% end %>

Мой javascript (обработчик Rails-UJS)

let filterMissionsForm = document.querySelector("#missions-filter-form");
filterMissionsForm.addEventListener("ajax:success", (e) => {
  let data = event.detail[0];
  let missionsTableElement = document.querySelector("#missions-table-wrapper")
  missionsTableElement.innerHTML = data;
})

Мой контроллер:

class MissionsController < ApplicationController

  def index
    @missions = Mission.all

   respond_to do  |format|
      # Option 1
      format.html {render 'missions'}
      # Option 2
      format.js 
    end
  end
end

У меня есть два варианта, которые мне приходят в голову, но оба они не будут работать.

Вариант 1. Выполнит полное обновление страницы, как если бы partial: был проигнорирован.

Вариант 2: генерирует ошибку в консоли браузера, поскольку сервер отвечает HTML-документом в файле, который должен содержать javascript.

Как правильно делать то, что я хочу?

Вкратце: как заставить серверную часть генерировать в AJAX фрагменты HTML, которые могут обрабатываться обработчиками Rails-UJS?

...