Hotwire ломает link_to рельсы

Недавно я добавил Hotwire в свое приложение rails для обновления модальных окон, но это сломало link_to, который у меня перенаправлял пользователей на полосу. Я искал в Интернете способы обойти это, но, поскольку Hotwire относительно новый, я не смог его найти. Есть ли у кого-нибудь рекомендации, как заставить link_to работать с турбо-потоком?

5 ответов

Есть три способа (как минимум) восстановить поведение ссылки по умолчанию (не в режиме Turbo).

1: Установите для атрибута data-turbo значение false.

      <%= link_to "Click Here", path_helper_method, data: { turbo: false } %>
(or in plain html)
<a href="" data-turbo="false">

2: Установите целевой атрибут.

      <%= link_to "Click Here", path_helper_method, target: "_top" %>
(or in plain html)
<a href="" target="_top">

3: переместить ссылку за пределы любого турбо-кадра. Любая ссылка внутри кадра Turbo без одного из вышеперечисленных атрибутов будет обрабатываться Turbo по умолчанию (часто с неожиданными результатами).

Если внутри есть ссылка turbo_frame_tagвы можете заставить его работать как обычно, внедрив специальный фрейм, называемый _topкоторый представляет всю страницу. Просто добавь data: { turbo_frame: "_top" }на вашу ссылку.

      link_to "string", object, data: { turbo_frame: "_top" }

Помощники, которые превращают link_to в удаленные вызовы, в настоящее время не работают с Turbo. Ссылки, которые были сделаны удаленными, не будут оставаться внутри фреймов и не позволят вам отвечать действиями турбо-потока. Рекомендуется заменить эти ссылки стилизованными на button_to, чтобы вы проходили через обычную форму, и вам будет лучше, если вы будете соблюдать ее.

Если ссылка находится внутри turbo_frame_tag с или устанавливается глобально / для любого из родительских элементов, ссылка будет действовать как turbo: trueэто означает, что он не будет перенаправлять вас, поскольку он попытается выполнить запрос ajax. Попробуй сделать <%= link_to 'Woodoo', root_path, data: { turbo: false } %>

Я столкнулся с той же проблемой, но

Я меняю это

<%= link_to "Create A Comment", new_model_post_comment_path(@model_post.id),method: :get%> </span>

к этому, и это сработало для меня

<%= link_to "Create A Comment", new_model_post_comment_path(@model_post.id)%> </span>

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