Ссылка на турбокадр не работает, вместо этого просматривается вся страница
У меня есть следующий код:
<%= 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
меня устраивает.