在 Hotwire/Rails 应用中,何时使用 target: '_top' 作为 turbo_frame?

In a Hotwire/Rails app, when to use target: '_top' for a turbo_frame?

turbo 手册解释 target: '_top' here and here

但是我还是不明白这两种形式有什么区别:

#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 %>

两种形式都会通过GET方式发送一个正常的HTML格式请求,整个页面都会被Turbo Drive替换。所以在这种情况下,他们的行为看起来非常相似。

target: '_top' 仅在我需要通过 Turbo Frame 的 src 属性延迟加载某些内容而我希望内容在框架外导航时有用吗? :

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

您是正确的,任何环绕框架之外的表单(如您的 #2 示例)与具有 target="_top"

的框架标签内的表单相同

但是请考虑没有 _top 属性的第一个示例:

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

这与示例#2 不同,搜索表单的结果将仅在 new_search 框架内运行。这是 _top 属性的要点,用于在其包装框架之外打破表格或 link。