【问题标题】:In a Hotwire/Rails app, when to use target: '_top' for a turbo_frame?在 Hotwire/Rails 应用程序中,何时使用 target: '_top' 作为 turbo_frame?
【发布时间】:2021-06-10 07:13:57
【问题描述】:

turbo 手册解释了target: '_top'herehere

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 hotwire-rails turbo


    【解决方案1】:

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

    但请考虑您的第一个不带 _top 属性的示例:

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

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

    【讨论】:

    • 谢谢!但是我什么时候需要打破它的框架之外的形式?我的意思是我可以删除代码中的框架。如果我想在框架中创建特定链接以在外部导航,我可以在链接上使用data-turbo-frame="_top"。所以我看不到将target="_top" 添加到框架的好案例。
    • 您可能是正确的,只有在延迟加载 src 时才有意义。 Hotwire 仍然很新,可能缺少文档,我建议在他们的社区页面上询问 discuss.hotwire.dev
    猜你喜欢
    • 2011-02-02
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多