gpt4 book ai didi

ruby-on-rails - 热线/涡轮框架 : why `target: "_top "` isn' t requesting pages via fetch?

转载 作者:行者123 更新时间:2023-12-05 01:52:09 24 4
gpt4 key购买 nike

我正处于将 Rails 应用程序从 Turbolinks/rails-ujs(使用效果很好的 ol js.erb View )迁移到 Hotwire/Turbo 的早期阶段。

想象一下带有搜索表单和结果表的传统 users/index.html.erb 页面:

<%= form_with(scope: :search, url: url_for, method: :get, data: { turbo_frame: "users_table" }) do |f| %>

<%= f.search_field :name %>

<% end %>

<%= turbo_frame_tag("users_table") do %>

<% @users.each do |user| %>
<%= link_to user.name, user, target: :_top %>
<% end %>

<%== pagy_bootstrap_nav(@pagy) %>

<% end %>

因此,上面的搜索表单可以更新下面的 turbo_frame_tag 而无需重新加载整个页面(这会根据需要将焦点和状态保持在表单中)。

turbo_frame_tag 内的每个链接都应导航到/users/show,替换整个页面。由于在每个链接中包含了 target::_top 属性,所以它起作用了。

但是,用户体验却很糟糕。使用 Turbolinks,users_table 中的每个链接都发布了一个 AJAX 导航,替换了“body”并且感觉非常非常活泼。使用 Turbo/Hotwire,我可以在 devtools 中看到只有分页(在 turbo 框架内)和表单提交(由于 turbo_frame 属性)正在使用 fetch 获取,而用户名中的链接被请求作为常规 文档 导航。

更糟的是:后退按钮也没有任何缓存,因此单击用户名并返回所需的时间是 Turbolinks 的 5 倍。

这是使用 Turbo 时的预期回归吗?任何时候我在 turbo_frame 中有一个链接,我想跳出框架,我会失去 ajax 导航的所有好处吗?

最佳答案

找到解决方案。

代替

<%= link_to user.name, user, target: :_top %>

应该使用

<%= link_to user.name, user, data: { turbo_frame: :_top } %>

关于ruby-on-rails - 热线/涡轮框架 : why `target: "_top "` isn' t requesting pages via fetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71709651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com