1

turbo 手册target: '_top' 在此处此处进行了说明。

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

#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 替换。因此,在这种情况下,它们的行为看起来非常相似。

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

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

1 回答 1

0

您是正确的,任何包装框架之外的表单(如您的#2 示例)与框架标签内的表单相同,该表单具有target="_top"

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

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

现在这与示例 #2 不同,搜索表单的结果只会在 new_search 框架内运行。这是 _top 属性的要点,用于在其包装框架之外断开表单或链接。

于 2021-06-10T08:05:56.650 回答