首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Turbolinks导致"jquery-ujs已加载!“错误

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

Stack Overflow用户
提问于 2013-12-19 22:56:30
回答 4查看 19K关注 0票数 27

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

当我在应用程序周围单击时,我在JS控制台中不断收到错误jquery-ujs has already been loaded!。每次我点击“后退”按钮,有时当我点击一个普通的链接时,它就会发生(尽管我不能让它一直发生)。

application.js:

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .

当我从application.js中删除turbolink时,我不再收到这个错误...因此turbolinks似乎是罪魁祸首。

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

这是我的Gemfile:

代码语言:javascript
复制
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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-19 23:09:56

最可能的解释是您在页面body中包含了脚本。

有关更多信息,请参阅本期:https://github.com/rails/turbolinks/issues/143

turbolinks readme

作为一个经验法则当切换到Turbolinks时,在head中移动所有的javascript标记,然后向后工作,只有在绝对必要的情况下才将javascript代码移回正文。如果正文中有任何不希望重新计算的脚本标记,则可以将data-turbolinks-eval属性设置为false

代码语言:javascript
复制
<script type="text/javascript" data-turbolinks-eval=false>
  console.log("I'm only run once on the initial page load");
</script>
票数 58
EN

Stack Overflow用户

发布于 2014-08-05 06:05:39

我也面临着同样的问题,在做了一些尝试和尝试之后,我发现javascript文件的顺序很重要。

工作顺序是

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require turbolinks

希望这个解决方案能帮助某些人。

票数 5
EN

Stack Overflow用户

发布于 2017-11-28 18:33:19

对我来说,我写了两次,所以它加载了两次。一次在application.js //= require jquery中,一次在application.html.erb中作为脚本标记。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20684846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档