select2-rails gem不能在Rails4上运行
我已经尝试过select2-rails gem的文档,但是我的浏览器控制台仍然会抛出错误。
未捕获的TypeError:$(…)。select2不是函数
我使用的是rails 4.0.1
和select2-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