Turbolinks导致"jquery-ujs已被加载!" 错误

 嗳__霞骸 发布于 2023-02-09 10:57

我有一个新的Rails 4应用程序,它包含自定义Javascript - 文件夹app/assets/javascripts,lib/assets/javascripts并且vendor/assets/javascripts都是空的(除了app/assets/javascripts/application.js).

当我点击应用程序时,我一直jquery-ujs has already been loaded!在JS控制台中收到错误.每次我点击"后退"按钮时都会发生这种情况,有时当我点击正常链接时(虽然我无法让它始终如一地发生).

application.js中:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .

当我从application.js中删除turbolinks时,我不再收到错误...所以turbolinks似乎是罪魁祸首.

这是turbolinks的错误,还是我做错了什么?

这是我的Gemfile:

source 'https://rubygems.org'

ruby '2.0.0'

gem 'rails', '4.0.0'

gem 'active_model_serializers'
gem 'aws-sdk'
gem 'bootstrap-sass-rails'
gem 'coffee-script-source', '1.5.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'devise'
gem 'factory_girl_rails', '4.1.0'
gem 'figaro'
gem 'font-awesome-sass-rails'
gem 'jbuilder', '~> 1.2'
gem 'jquery-rails'
gem 'paperclip'
gem 'paperclip-meta', github: 'y8/paperclip-meta'
gem 'pg'
gem 'sass-rails', '~> 4.0.0'
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'

group :production do
  gem 'rails_12factor'
end

group :doc do
  gem 'sdoc', require: false
end

group :test do
  gem 'capybara', '2.1.0'
end

group :development, :test do
  gem 'childprocess', '0.3.9'
  gem 'debugger'
  gem 'faker', '~> 1.2.0'
  gem 'json_spec'
  gem 'rspec-rails'
  gem 'rspec-mocks'
end

group :development do
  gem 'annotate'
  gem 'hirb'
  gem 'wirb'
end

require在application.js中改变s 的顺序似乎也没有帮助.

2 个回答
  • 最可能的解释是您在页面中包含脚本body.

    有关详细信息,请参阅此问题:https://github.com/rails/turbolinks/issues/143

    来自turbolinks自述文件:

    根据切换到Turbolinks的经验法则,将所有javascript标签移到内部head,然后向后工作,只有在绝对必要时才将javascript代码移回正文.如果您在身体中有任何脚本标签,则不希望重新评估,那么您可以将该data-turbolinks-eval属性设置为false:

    <script type="text/javascript" data-turbolinks-eval=false>
      console.log("I'm only run once on the initial page load");
    </script>
    

    2023-02-09 11:00 回答
  • 我遇到了同样的问题,经过一些打击和试验后,我发现javascript文件的顺序很重要.

    工作顺序是

    //= require jquery
    //= require jquery_ujs
    //= require jquery.turbolinks
    //= require turbolinks
    

    希望,这个解决方案能帮助别人.

    2023-02-09 11:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有