Ссылка на турбокадр не работает, вместо этого просматривается вся страница

У меня есть следующий код:

      <%= turbo_frame_tag :my_frame do %>
  frame
<% end %>

<%= link_to "About", about_path, data: { turbo_frame: :my_frame } %>

Когда я нажимаю ссылку «О программе», содержимое фрейма не обновляется. Вместо этого вся страница переходит к .

Я знаю, что это не проблема с приведенным выше кодом, потому что я протестировал точно такой же код в новом приложении, и он работал нормально. Что-то в этом приложении отличается, из-за чего эта ссылка на турбо-кадры не работает.

Любые идеи?

8 ответов

это поздний ответ, но я наткнулся на ваш вопрос после той же проблемы. В моем случае я пытался использовать turbo_frame_tag внутри таблицы, и это не сработало, потому что таблица не принимала никаких других элементов, кроме своих: https://github.com/hotwired/turbo/issues/48 .

Оказывается, вам нужно, чтобы ответ был заключен в турбо-тег с тем же именем.

В вашем первом звонке

      <%= turbo_frame_tag :my_frame do %>
  frame content
<% end %>

Ваш ответ должен быть обернут следующим образом:

      <%= turbo_frame_tag :my_frame do %>
  response generated on server.
<% end %>

В моем случае это произошло из-за отсутствия импорта hotwire в application.js. Я просто добавил:import "@hotwired/turbo-rails"и это сделано.

это странно, потому что я не вижу никаких требований по этому поводу в геме Turbo-Rails, и после запуска задач установки rake этих изменений не было.

Мое приложение работает на Rails 6.

Должен бытьdata: {"turbo-frame"=> "my_frame"}в теге link_to. Я думаю, что это не понимание my_frame как символа или, возможно, ключа turbo_frame в хеше.

Просто добавлю к списку вещей, которые могут быть неправильными:

я добавилdata-turbo="false"выше в дереве документов (в моем навигационном меню) на каком-то этапе в прошлом, когда ни одна из кнопок в навигационном меню не требовала турбо. Это, конечно, отключило турбо для любых дочерних ссылок.

Я только что решил эту подобную ситуацию сейчас. Проблема заключалась в опечатке в -tag представления, которое я запрашивал. Эта ошибка отображалась в консоли как:

Соответствующий фрейм для #show_client отсутствовал в ответе, превращаясь в посещение на всю страницу.

Это означает, что вы должны убедиться, что ресурс, который вы запрашиваете, в порядке, иначе Rails вернется к полной замене страницы того, что запрашивает ваша ссылка.

Возможно, это очень специфично для моего случая, но у меня тоже была такая же проблема.

Оказалось, что это было внутри контроллера стимулов, где у меня был один из родительских элементов, в котором находилась моя ссылка.

Удаление.stopPropagation()позволил ссылкам турбокадров снова работать, как и ожидалось.

попробуй это:

выполнить команду в терминалеyarn add @hotwired/turbo-rails

следующая добавить строкуimport "@hotwired/turbo-rails"вapp/javascript/application.js

и запустить рельсыbin/devвместоrails s

меня устраивает.

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