Rails Turbo не запускает событие turbo:load

Событие turbo:load не запускается после турбо-посещения (как указано в документации ). Он работает, как и ожидалось, после первоначальной полной загрузки страницы. Я могу поймать событие «turbo:before-fetch-response», но мне не повезло с turbo:load, :render, :frame-render, :frame-load.

Мой запрос turbo_stream - это формат TURBO_STREAM, чтобы уничтожить вложение. Ответ контроллера

      respond_to do |format|
  format.turbo_stream do
    render 'attachments/delete_document',
               locals: { target: "docs-list-#{img.id}" }
  end
end

и я возвращаю два турбо-потока, действия по обновлению и удалению которых работают по назначению:

      <turbo-stream action="remove" target="<%= target %>">
  <template></template>
</turbo-stream>

<turbo-stream action="update" target="flash_messages">
<template>
  <%= render partial: 'layouts/flash', formats: :html,
             locals: { type: :notice,
                       message: 'Attachment removed.' } %>
</template>
</turbo-stream>

(Примечание. Это часть другого поста . Предложенное там решение не работает в моем случае, поскольку полный атрибут существует только для HTML-элементов img .)(Я использую @hotwired/ turbo@ ^7.1.0, @ hotwired/ turbo-rails@ ^7.1.1 в Rails 7.0.1)

2 ответа

Я решил эту проблему с turbo:renderмероприятие:

      document.addEventListener('DOMContentLoaded', startFrontController)
document.addEventListener('turbo:render', startFrontController)

function startFrontController(event) {
  document.removeEventListener('DOMContentLoaded', startFrontController)
  new FrontController().start()
}

См. документацию по событиям Turbo: https://turbo.hotwired.dev/reference/events .

Подобно ответу Серджио, я в конечном итоге использовал одно из событий, предоставленных турбо, - в моем случае turbo:before-fetch-response, поскольку большинство других событий не срабатывали. Все еще не уверен, почему.

Однако: я обнаружил, что лучший ответ — использовать Stimulus. Предоставляет чистый интерфейс для добавления функций javascript.

Другие вопросы по тегам