Rails Hotwire: Почему моя ссылка исчезает, когда я нажимаю на нее?

#ruby-on-rails #hotwire-rails #turbo #turbo-frames

Вопрос:

Я пытаюсь включить Hotwire/Turbo в существующее приложение Rails. Я добавил турбо-кадры на простую страницу редактирования, но теперь, когда я нажимаю кнопку «Назад», она исчезает вместо того, чтобы перенести меня на целевую страницу. Ссылка очень проста link_to "Back", my_model_show_path(model_instance) .

Я вижу, что сетевой запрос выполняется и выполняется успешно. Предварительный просмотр страницы на вкладке «Сеть» DevTools показывает правильную страницу, загружаемую и отображаемую в формате html. Браузер просто не переносит меня на новое место.

Как мне сделать так, чтобы это работало, как раньше? Я чувствую, что должен иметь возможность перенаправлять в любое место своего приложения с помощью обычных ссылок, даже если я использую Hotwire/Turbo.

Ответ №1:

Оказывается, есть три способа (по крайней мере) восстановить поведение ссылки по умолчанию.

1: Установите data-turbo атрибут.

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

2: Установите target атрибут.

 <%= link_to "Click Here", path_helper_method, target: "_top" %>
(or in plain html)
<a href="" target="_top">
 
  1. Переместите ссылку за пределы любого турбо-кадра. Любая ссылка внутри Турбо-фрейма, без одного из вышеперечисленных атрибутов, будет обрабатываться Turbo по умолчанию.