GMA*_*GMA 22 javascript jquery ruby-on-rails turbolinks
我有一个新的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 .
Run Code Online (Sandbox Code Playgroud)
当我从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
Run Code Online (Sandbox Code Playgroud)
require在application.js中改变s 的顺序似乎也没有帮助.
Puh*_*lze 55
最可能的解释是您在页面中包含脚本body.
有关详细信息,请参阅此问题:https://github.com/rails/turbolinks/issues/143
根据切换到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>
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,经过一些打击和试验后,我发现javascript文件的顺序很重要.
工作顺序是
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require turbolinks
Run Code Online (Sandbox Code Playgroud)
希望,这个解决方案能帮助别人.
| 归档时间: |
|
| 查看次数: |
13863 次 |
| 最近记录: |