запрос turbo_frame_tag с форматами, отличными от HTML

Учитывая следующее

      <%= turbo_frame_tag dom_id(@item, "loader_helper"), src: home_index_path(@item) %>

Этот код инициирует загрузку страницы другим запросом к указанному контроллеру.

      Started GET "/home/1" for ::1 at 2023-01-23 16:10:39 +0300
Processing by HomeController#index as HTML

Проблема в том, что я хочу отображать не HTML, а формат turbo_stream с некоторыми изменениями страницы и не полагаться на какое-то решение JS.

Поэтому я ожидаю, что следующий псевдокод будет работать

      <%= turbo_frame_tag dom_id(@item, "loader_helper"), src: home_index_path(@item), format: :turbo_stream %>

чтобы загрузить действие так

      Started GET "/home/1" for ::1 at 2023-01-23 16:10:39 +0300
Processing by HomeController#index as TURBO_STREAM

а затем в контроллере я могу справиться с определенными форматами

      ..
def index
  respond_to do |format|
    format.html
    format.turbo_stream
  end
end

Есть ли обходные пути? Или это предусмотрено дизайном, поэтому мы не сможем запускать turbo_stream при загрузке страницы (вы можете легко сделать это с помощью js) и манипулировать с помощью некоторого HTML.

1 ответ

На основе документа https://turbo.hotwired.dev/handbook/streams , который он вводитtext/vnd.turbo-stream.htmlдля методов POST, PUT, PATCH или DELETE HTTP. Если вы хотите использовать его для метода GET, вы должны добавитьdata-turbo-streamатрибут. Итак, для вашего случая вы можете попробовать следующий код:

      <%= turbo_frame_tag dom_id(@item, "loader_helper"), src: home_index_path(@item, format: :turbo_stream) %>

Ссылка: https://github.com/hotwired/turbo-site/pull/40#discussion_r570471371

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