1

我正在使用一个 Rails 6 模板(Jumpstart Pro),它有新的东西 hotwire、stimulus、webpacker。它适用于基本的东西......搭建新模型和制作 CRUD 表单等。

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

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

所以我通过页眉中的一个很好的老式脚本标签将 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_to "cool page", "/cool_page")不起作用:

  • jQuery 已加载(我有一个小“hello world”jquery 脚本,它取消隐藏 div 以确认 jquery 已加载)
  • 供应商小部件未正确加载(浏览器控制台显示小部件对象为空)

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

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

由此我推断,当我导航到它时,hotwire/etc 背后的魔力会干扰页面的正确加载。

所以,问题是:在一个支持热线的 Rails 6 应用程序中,有没有办法有一个导航链接,当点击时,它会告诉 Rails...跳过热线快捷方式,真正加载这个页面?

4

1 回答 1

1

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

看到这个答案:https ://stackoverflow.com/a/68657223/2648054

简而言之:

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

于 2021-08-05T18:53:46.197 回答