Rails:如何在 Rails 5 中禁用 turbolinks?

Rails: How to disable turbolinks in Rails 5?

在处理 websockets 时一直很头疼,除了添加错误外,它还降低了我的性能。由于 ActionCable 是我升级的全部原因,我非常想完全摆脱它。

app/assets/javascripts/application.js 中删除 //= require turbolinks 似乎成功了。

我还删除了 app/views/layouts/application.html.erb

中的两个 turbolinks 引用

基本上直接来自here。 Rails 4,但我相信步骤是一样的。

1) 从 Gemfile 中删除 gem 'turbolinks' 行。

2) 从 app/assets/javascripts/application.js .

中删除 //= require turbolinks

3) 从 app/views/layouts/application.html.erb 中删除两个 "data-turbolinks-track" => true 散列 key/value 对。

编辑:从至少 Rails 5.0.0 开始,最后一步应参考 "data-turbolinks-track" => "reload" 而不是 "data-turbolinks-track" => true. 感谢@boddhisattva

编辑:至少从 Rails 4.2 开始,您可以生成一个没有 turbolinks 的项目。只需使用这样的东西:

rails new my_app --skip-turbolinks

从 application.html.erb 中完全删除 turbolinks 标签可能会破坏 CSS 和 JS。如果没有加载 CSS 或 JS,请添加此行而不是 turbolinks:

<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>

您也可以在创建 rails 应用程序时使用;

rails new app name --skip-turbolinks

如果你正在使用 Webpacker (Rails 5-6)

  • Gemfile 和 运行 中删除这一行 bundle:

gem 'turbolinks', '~> 5'

  • 运行 yarn remove turbolinks

  • 从应用程序包文件中删除这一行app/javascript/packs/application.js:

    require("turbolinks").start()

  • 从您的 html 中删除任何 data-turbolinks 数据属性。

变化:

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>