【问题标题】:Rails: How to disable turbolinks in Rails 5?Rails:如何在 Rails 5 中禁用 turbolinks?
【发布时间】:2016-12-03 14:58:33
【问题描述】:

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

【问题讨论】:

  • 跨页面缓存元素一直是我最头疼的问题。

标签: ruby-on-rails-5


【解决方案1】:

如果您使用的是 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
【解决方案2】:

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

rails new app name --skip-turbolinks

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 第 3 步可以澄清,但它是说只删除 "data-turbolinks-track" =&gt; "reload" 部分(只是那个键/值对),而不是整个标签。
    【解决方案4】:

    基本上直接来自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" =&gt; true 哈希键/值对。

    编辑:至少从 Rails 5.0.0 开始,最后一步应该引用 "data-turbolinks-track" =&gt; "reload" 而不是 "data-turbolinks-track" =&gt; true 感谢@boddhisattva

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

    rails new my_app --skip-turbolinks

    【讨论】:

    • 我最近尝试在 Rails 5 应用程序中删除 turbolinks(准确地说是使用 Rails 5.0.0.1),我不得不在第 3 步中删除 data-turbolinks-track': 'reload' 而不是 "data-turbolinks-track" =&gt; true。我还看到他们指定了相同的键值对 - "data-turbolinks-track" =&gt; "reload" 作为 Rails 5 最新资产管道指南的一部分 - guides.rubyonrails.org/…
    • 重要:应该有一个步骤 4) -- 代替刚刚删除的 data-turbolinks-track 链接,在此处添加第一个框中的第一个链接:guides.rubyonrails.org/…。简单地删除 turbolink 链接会导致 javascript 完全停止工作。
    • 部署到 Heroku 生产服务器时,这对我不起作用。
    • 您是否已经提交了更改?我不确定 Heroku,但对于类似的 Elastic Beanstalk,您需要先在 Git 中提交更改,然后才能部署它们。
    • @s2t2 我在 Heroku 上的生产中遇到了同样的问题,即使从我的应用程序中完全删除了 turbolinks。你有没有发现问题?
    【解决方案5】:

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

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

    【讨论】:

    • 删除/评论 require 是禁用 TurboLinks 而不卸载它的最简单方法。这是一种“评论”它的方法://= xxxrequire turbolinks
    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多