select2-rails gem不能在Rails4上运行

我已经尝试过select2-rails gem的文档,但是我的浏览器控制台仍然会抛出错误。

未捕获的TypeError:$(…)。select2不是函数

我使用的是rails 4.0.1select2-rails 3.5.9.3

我的application.js

 //= require jquery //= require select2 //= require jquery.ui.accordion //= require jquery.ui.menu //= require jquery.ui.datepicker //= require common //= require posts //= require twitter/bootstrap //= require owl.carousel //= require turbolinks //= require vendor_js //= require_tree . $(document).ready(function() { $("select#team_select").select2(); }); 

application.css

 *= require select2 *= require_self *= require jquery.ui.accordion *= require jquery.ui.menu *= require jquery.ui.datepicker *= require common *= require owl.carousel *= require lazybox *= require fancybox *= require owl.theme *= require 7531339 *= require_tree . *= require font-awesome 

_form.html.erb

  

我在这做错了什么? 任何帮助表示赞赏。

问题肯定在application.js中 :根据他们的演示应用程序 ,需要JS插件的顺序如下:

 //= require jquery //= require jquery_ujs //= require turbolinks //= require select2 //= require select2_locale_pt-BR //= require_tree . 

在您的情况下,您必须 select2 之前加载turbolinks ,导致:

 //= require jquery //= require turbolinks //= require select2 //= require jquery.ui.accordion //= require jquery.ui.menu //= require jquery.ui.datepicker //= require common //= require posts //= require twitter/bootstrap //= require owl.carousel //= require vendor_js //= require_tree . 

我在使用rails 4.1.5和select2-rails 3.5.9.3时从未遇到过这个问题。 但是,在将rails升级到4.2.4之后,我得到了与此问题中描述的完全相同的错误:

未捕获的TypeError:$(…)。select2不是函数

我能够通过从我的Gemfile中删除“select2-rails”gem并将其替换为以下内容来解决错误:

 source 'https://rails-assets.org' do gem 'rails-assets-select2', '~> 4.0.0' end 

在使用CoffeeScript和turbolinks的rails 5上,我不得不使用该行:
$(document).on "turbolinks:load", ->在所有内容之前,以便在加载带有select标签的所需页面时执行代码。

我有同样的问题,改变JS插件的顺序没有帮助。

我最终删除了turbolinks,它现在正在工作。 可能不是最好的解决方案,但这是我在搜索几个小时后获得的最好的东西。

所以,基本上我从application.js文件中删除了该行:

 //= require turbolinks