select2-rails gem is not working on Rails4

与世无争的帅哥 提交于 2019-11-30 13:54:12

The problem is surely in application.js: According to their Demo App, the sequence of requiring JS plugins is as follows:

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

In your case, you have to load turbolinks before select2, leading to:

//= 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 .

I never encountered this issue while using rails 4.1.5 & select2-rails 3.5.9.3. However, after upgrading rails to 4.2.4, I get the same exact error described in this question:

Uncaught TypeError: $(...).select2 is not a function

I was able to resolve the error by removing the "select2-rails" gem from my Gemfile and replacing it with:

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

On rails 5 using CoffeeScript and turbolinks I had to use the line:
$(document).on "turbolinks:load", -> before everything so that the code gets executed when the desired page with the select tag is loaded.

I had the same problem and changing the order of JS plugins didn't help.

I ended up removing turbolinks and it's working now. Probably not the best solution but it was the best thing that I achieve after some hours searching.

So, basicly I removed that line from application.js file:

//= require turbolinks
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!