Когда в приложении Hotwire/Rails использовать tartget: '_top' для turbo_frame?

В руководстве по турбонаддуву объясняется здесь и здесь .

Но я до сих пор не понимаю, в чем разница между этими двумя формами:

#1

      <%= turbo_frame_tag 'new_search', target: '_top' do %>    
  <%= search_form_for :q do |f| %>
    ...
  <% end %>
<% end %>

# 2

      <%= search_form_for :q do |f| %>
  ...
<% end %>

Обе формы отправят обычный запрос в формате HTML с помощью метода GET, и вся страница будет заменена на Turbo Drive. Так что в этом случае их поведение выглядит очень похоже.

Является target: '_top' полезно только тогда, когда мне нужно лениво загрузить что-то через srcатрибут Turbo Frame, в то время как я хочу, чтобы контент перемещался за пределы кадра? :

      <%= turbo_frame_tag 'something', src: '/something', target: '_top' %>

1 ответ

Вы правы в том, что форма за пределами любого фрейма обертывания (например, ваш пример №2) совпадает с формой в теге фрейма, который имеет target="_top"

Но рассмотрим свой первый пример без атрибута _top:

      <%= turbo_frame_tag 'new_search' do %>    
     <%= search_form_for :q do |f| %>
     ...
     <% end %>
<% end %

Теперь это не то же самое, что и в примере №2, результат формы поиска будет работать только в пределах кадра new_search. Это цель атрибута _top, чтобы разбить форму или ссылку за пределы рамки обертывания.

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