Rails 4: jquery-turbolinks causing "Uncaught TypeError: Cannot read property 'length' of undefined"

Rails 4: jquery-turbolinks causing "Uncaught TypeError: Cannot read property 'length' of undefined"

我的 Javascript 仅在 Rails 刷新页面后加载。调查之后,推荐的解决方案似乎是使用 turbolinks。但是,当我包含 jquery-turbolinks gem 时,JQuery 本身似乎由于某些依赖性错误而崩溃。

Uncaught TypeError: Cannot read property 'length' of undefined

这是我的 application.js 文件的样子

//= require turbolinks
//= require angular/angular.min
//= require angular/angular-route.min
//= require jquery
//= require jquery_ujs
//= require jquery-ui.min
//= require jquery.turbolinks
//= require chosen-jquery
//= require bootstrap
//= require conversations
//= require analytics
//= require common
//= require jquery.infinite-pages
//= require jquery.contenthover
//= require overlay
//= require tag-it.min
//= require_tree .
//= require_tree ../../../vendor/assets/javascripts/.

总而言之,如果我不使用 jquery-turbolinks,我的 JS 将在页面刷新后才会加载。如果我确实使用它,jQuery 会崩溃。如果我尝试将它放在 require jquery 之前,它找不到 JQuery 文件并说 $ 不是一个函数。

在 jQuery

之后订购 jQuery.turbolinks
//= require turbolinks
//= require angular/angular.min
//= require angular/angular-route.min
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-ui.min

这就是 jQuery.turbolinks 正常工作的方式