Rails 6/Hotwire - 如何在 link_to 某个页面时强制 "full page load"

Rails 6/Hotwire - how force "full page load" when link_to a certain page

我正在使用 Rails 6 模板 (Jumpstart Pro),其中包含热线、刺激、webpacker 等新功能。它适用于基本的东西......搭建新模型并制作 CRUD 表单等。

但是我的一个页面使用了供应商的 javascript 小部件,这也需要 jquery。

Jumpstart Pro 模板及其论坛都没有任何 up-to-date 文档或支持通过 webpacker 添加 jQuery(例如,不支持以“正确方式”添加 jquery)。

所以我通过 header

中的老式脚本标签将 jquery 添加到需要它的一页
%script{:src => "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"}

之后是供应商的 javascript 以初始化供应商的小部件,在 $(document).ready(function(){ init_code_goes_here }); 内以便小部件有时间加载到页面。

有效:如果我在浏览器“localhost:5000/cool_page”或“mydev.ngrok/cool_page中输入页面的url ",效果很好。

已损坏:但是 在应用程序中单击 link 以转到页面(通过 link_to "cool page", "/cool_page")不起作用:

但是如果我然后 刷新 页面,一切都会正常加载。

因此,如果“已加载”页面可以工作,但不能通过另一个页面到达。

据此我推断 hotwire/etc 背后的魔力在我导航到该页面时干扰了该页面的正常加载。

所以,问题是: 在 hotwire-enabled Rails 6 应用程序中,有没有办法让导航 link单击时,简单地告诉 Rails... 跳过热线快捷方式,加载此页面 真正 ?

我认为您的问题只是您需要恢复默认(非热线)link 行为。有 3 种方法可以做到这一点。

看到这个答案:

简而言之:

1:将 data-turbo 属性设置为 false。
2:将目标属性设置为“_top”。
3:将 link 移到任何 Turbo 框架之外。 Turbo 框架内的任何 link,如果没有上述属性之一,默认情况下将由 Turbo 处理。