在 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。
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。