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>