запрос 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