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

63

处理Websockets时总是头痛,这不仅降低了我的性能还导致了错误。由于ActionCable是我升级的主要原因,因此我非常希望完全摆脱它。


4
跨页面元素缓存一直是我最头痛的问题。 - user9903
5个回答

95
以下内容来自于这里,虽然是针对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键值对。

编辑:至少在Rails 5中,最后一步应该是将"data-turbolinks-track" => true改为"data-turbolinks-track" => "reload"感谢@boddhisattva提供信息 编辑:至少在Rails 4.2中,您可以一开始就不使用turbolinks生成项目。只需像这样使用: rails new my_app --skip-turbolinks

1
最近我尝试在一个Rails 5应用程序中(确切地说是使用Rails 5.0.0.1)移除turbolinks,作为第3步的一部分,我不得不删除data-turbolinks-track': 'reload'而不是"data-turbolinks-track" => true。我还看到他们在这里 - http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets 的最新资产管道指南中指定了相同的键值对 - "data-turbolinks-track" => "reload" - boddhisattva
1
重要提示:应该有第四步)-- 在刚刚被移除的 data-turbolinks-track 链接的位置,添加在此处找到的第一个链接:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets。仅仅删除turbolink链接会导致JavaScript完全停止工作。 - San Diago
当部署到Heroku生产服务器时,这并不能满足我的需求。 - s2t2
你已经提交更改了吗?我不确定Heroku,但对于类似的Elastic Beanstalk,您需要在Git中提交更改才能部署。 - arjabbar
@s2t2 我在Heroku上的生产环境中也遇到了同样的问题,即使我已经完全从我的应用程序中删除了turbolinks。你最终解决了这个问题吗? - justinraczak

12

app/assets/javascripts/application.js中删除//= require turbolinks似乎解决了问题。

我还在app/views/layouts/application.html.erb中删除了两个turbolinks引用。


1
移除/注释require是禁用TurboLinks而不卸载它的最简单方法。这里是一种'注释'的方式://= xxxrequire turbolinks - Chloe

11

如果您正在使用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' %>

同样适用于Rails 6 - fguillen

4

当您创建Rails应用程序时,也可以使用以下方式:

rails new app name --skip-turbolinks

2

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

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

第三步可能需要澄清,但它是在说只要移除 "data-turbolinks-track" => "reload" 这个键值对,而不是整个标签。 - mltsy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接