Как полностью отключить турбо ссылки с рельсов

Я просмотрел немало постов и документации к турболинкам и думаю, что еще не совсем понял. Я пытаюсь полностью отключить турболинки в приложении rails 5. Вот как я это сделал

  1. Удалены gem 'trubolinks'
  2. удалены все вхождения //=require turbolinks из application.js
  3. удален data-turbolinks-track от stylesheet_link_tag а также javascript_include_tag

Application.html.erb теперь выглядит так

<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%= content_for?(:title) ? yield(:title) : "Website" %></title>
    <meta name="description" content="<%= content_for?(:description) ? yield(:description) : "Website" %>">
    <%= stylesheet_link_tag 'application', media: 'all' %>
    <%= stylesheet_link_tag params[:controller]  %>
    <%= javascript_include_tag 'application' %>
    <%= javascript_include_tag :modernizr %>    
    <%= javascript_include_tag params[:controller] %>
    <%= if(params[:action].eql?'contact')
          javascript_include_tag 'https://www.google.com/recaptcha/api.js?onload=vcRecaptchaApiLoaded&render=explicit' , async: 'async',  defer: 'defer' 
        end
    %>  
    <%= csrf_meta_tags %>
  </head>
  <body data-turbolinks='false'>
     ...
  </body>
</html>

файл application.js:

//= require jquery
//= require jquery_ujs
//= require lodash
//= require bootstrap-sprockets
//= require jquery.sticky

и application.css

@import "bootstrap-sprockets";
@import "bootstrap"; 
@import "font-awesome-sprockets";
@import "font-awesome"; 
@import "normalize-rails";
@import "animate";
.... 
/* other css stuff */

Я думал, используя data-turbolinks=false тег body должен помочь отключить его для всех страниц в этом макете. Но это не помогло, страницы не загружаются с ошибкой

Sprockets::FileNotFound at /
couldn't find file 'turbolinks' with type 'application/javascript'
Checked in these paths: 
  /Users/anadi/Code/website/app/assets/config
  /Users/anadi/Code/website/app/assets/fonts
  /Users/anadi/Code/website/app/assets/images
  /Users/anadi/Code/website/app/assets/javascripts

в этой строке на главной странице

<%= image_tag("pages/home/xyz_logo.png", class: "img-responsive", alt: "Customer") %>

если я посмотрю на трассировку стека, ActionView неизменно зависит от турболинков:

  sprockets (3.7.0) lib/sprockets/directive_processor.rb:182:in `rescue in block in process_directives'
  sprockets (3.7.0) lib/sprockets/directive_processor.rb:179:in `block in process_directives'
  sprockets (3.7.0) lib/sprockets/directive_processor.rb:178:in `process_directives'
  sprockets (3.7.0) lib/sprockets/directive_processor.rb:83:in `_call'
  sprockets (3.7.0) lib/sprockets/directive_processor.rb:68:in `call'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:75:in `call_processor'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:57:in `block in call_processors'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:56:in `call_processors'
  sprockets (3.7.0) lib/sprockets/loader.rb:134:in `load_from_unloaded'
  sprockets (3.7.0) lib/sprockets/loader.rb:60:in `block in load'
  sprockets (3.7.0) lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
  sprockets (3.7.0) lib/sprockets/loader.rb:44:in `load'
  sprockets (3.7.0) lib/sprockets/cached_environment.rb:20:in `block in initialize'
  sprockets (3.7.0) lib/sprockets/cached_environment.rb:47:in `load'
  sprockets (3.7.0) lib/sprockets/bundle.rb:23:in `block in call'
  sprockets (3.7.0) lib/sprockets/utils.rb:196:in `dfs'
  sprockets (3.7.0) lib/sprockets/bundle.rb:24:in `call'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:75:in `call_processor'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:57:in `block in call_processors'
  sprockets (3.7.0) lib/sprockets/processor_utils.rb:56:in `call_processors'
  sprockets (3.7.0) lib/sprockets/loader.rb:134:in `load_from_unloaded'
  sprockets (3.7.0) lib/sprockets/loader.rb:60:in `block in load'
  sprockets (3.7.0) lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
  sprockets (3.7.0) lib/sprockets/loader.rb:44:in `load'
  sprockets (3.7.0) lib/sprockets/cached_environment.rb:20:in `block in initialize'
  sprockets (3.7.0) lib/sprockets/cached_environment.rb:47:in `load'
  sprockets (3.7.0) lib/sprockets/base.rb:66:in `find_asset'
  sprockets (3.7.0) lib/sprockets/base.rb:73:in `find_all_linked_assets'
  sprockets (3.7.0) lib/sprockets/manifest.rb:134:in `block in find'
  sprockets (3.7.0) lib/sprockets/manifest.rb:133:in `find'
  sprockets-rails (3.1.1) lib/sprockets/railtie.rb:50:in `precompiled_assets'
  sprockets-rails (3.1.1) lib/sprockets/railtie.rb:35:in `asset_precompiled?'
  sprockets-rails (3.1.1) lib/sprockets/railtie.rb:250:in `block (3 levels) in <class:Railtie>'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:342:in `precompiled?'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:346:in `raise_unless_precompiled_asset'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:313:in `asset_path'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:85:in `block in resolve_asset_path'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:225:in `block in resolve_asset'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:224:in `resolve_asset'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:84:in `resolve_asset_path'
  sprockets-rails (3.1.1) lib/sprockets/rails/helper.rb:74:in `compute_asset_path'
  actionview (5.0.0) lib/action_view/helpers/asset_url_helper.rb:144:in `asset_path'
  actionview (5.0.0) lib/action_view/helpers/asset_url_helper.rb:311:in `image_path'
  actionview (5.0.0) lib/action_view/helpers/asset_tag_helper.rb:214:in `image_tag'

Похоже, что звездочки все еще ожидают турболинк js или URL-адрес image_tag ожидает этого. Я не хочу в конечном итоге добавить data: { turbolinks: false } на каждой ссылке или изображении. Как заставить это работать?

2 ответа

Решение

Я делал это неправильно, возможно, снова включил все, добавил data-turbolinks-track => true также и сохранился <body data-turbolinks='false'>, Теперь он работает, как и ожидалось, без ошибок.

  1. Удалите строку "turbolinks" из вашего Gemfile.
  2. Удалите //= require turbolinks из вашего app/assets/javascripts/application.js.
  3. Удалите две пары "data-turbolinks-track" => true хэш-ключ / значение из вашего app/views/layouts/application.html.erb.
Другие вопросы по тегам