Rails: How to disable turbolinks in Rails 5?
Asked Answered
T

5

63

It's a constant headache when dealing with websockets, and it kills my performance in addition to adding bugs. Since ActionCable is the whole reason I upgraded I'd very much like to get rid of it completely.

Thereinto answered 29/7, 2016 at 2:18 Comment(1)
caching of elements across pages has been the biggest headache for me.X
H
95

The following was copied from here. It's for Rails 4, but I believe the steps are the same.

  1. Remove the gem 'turbolinks' line from Gemfile.

  2. Remove the //= require turbolinks from app/assets/javascripts/application.js.

  3. Remove the two "data-turbolinks-track" => true hash key/value pairs from app/views/layouts/application.html.erb.

Edit: As of at least Rails 5 the last step should refer to "data-turbolinks-track" => "reload" as opposed to "data-turbolinks-track" => true. Thanks to @boddhisattva

Edit: As of at least Rails 4.2 you can generate a project without turbolinks to begin with. Just use something like this:

rails new my_app --skip-turbolinks

Hershberger answered 29/7, 2016 at 2:25 Comment(5)
I tried removing turbolinks recently in a Rails 5 app(using Rails 5.0.0.1 to be exact) and I had to remove data-turbolinks-track': 'reload' as part of step 3 instead of "data-turbolinks-track" => true. I also see that they've specified the same key value pair - "data-turbolinks-track" => "reload" as part of the latest asset pipeline guides for Rails 5 here - guides.rubyonrails.org/…Africander
Important: there should be a step 4) -- In place of the data-turbolinks-track links just removed, add the first links found in the first box here: guides.rubyonrails.org/… . Simply removing the turbolink links causes javascript to stop working completely.Closefitting
this doesn't do it for me when deploying to a Heroku production server.Genevivegenevra
Did you have the change committed already? I'm unsure about Heroku, but for Elastic Beanstalk, which is similar, you need to commit your changes in Git before they will be deployed.Hershberger
@Genevivegenevra I'm having this same problem with production on Heroku, even after completely removing turbolinks from my app. Did you ever figure out the problem?Budworth
T
12

Removing //= require turbolinks from app/assets/javascripts/application.js seems to have done the trick.

I also removed both turbolinks references in app/views/layouts/application.html.erb

Thereinto answered 29/7, 2016 at 2:23 Comment(1)
Removing/Commenting the require is the easiest way to disable TurboLinks without uninstalling it. Here is a way to 'comment' it: //= xxxrequire turbolinksInd
T
11

If you are using Webpacker (Rails 5-6)

  • Delete this line from Gemfile and run bundle:

gem 'turbolinks', '~> 5'

  • Run yarn remove turbolinks

  • Delete this line from application pack file app/javascript/packs/application.js:

    require("turbolinks").start()

  • Remove any data-turbolinks data attributes from your html.

Change:

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

to

<%= stylesheet_link_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>
Tevere answered 11/9, 2019 at 18:12 Comment(1)
Works for Rails 6 as wellCardholder
T
4

you can also do it when you create your rails application by using;

rails new app name --skip-turbolinks
Theobald answered 18/12, 2018 at 18:51 Comment(0)
H
2

Completely removing the turbolinks tags from application.html.erb might break CSS and JS. add this lines instead of the turbolinks if no CSS or JS is loaded:

<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
Hoyos answered 5/11, 2017 at 17:40 Comment(1)
Step 3 could be clarified, but it's saying to remove just the "data-turbolinks-track" => "reload" part (just that key/value pair), not the entire tag.Doubs

© 2022 - 2024 — McMap. All rights reserved.