select2-rails gem 在 Rails4 上不工作
select2-rails gem is not working on Rails4
我已尝试为 the select2-rails gem 提供文档,但我的浏览器控制台仍然会引发错误。
Uncaught TypeError: $(...).select2 is not a function
我正在使用 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
<%= f.select(:team_id, @teams.collect {|p| [p.name, p.id]}, {include_blank: "None"}, {id: "team_select"}) %>
我做错了什么?感谢任何帮助。
问题肯定出在application.js:根据他们Demo App,需要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 .
我遇到了同样的问题,更改 JS 插件的顺序没有帮助。
我最终删除了 turbolinks,它现在可以正常工作了。可能不是最好的解决方案,但这是我经过几个小时的搜索后得到的最好的解决方案。
所以,基本上我从 application.js 文件中删除了那一行:
//= require turbolinks
我在使用 rails 4.1.5 和 select2-rails 3.5.9.3 时从未遇到过这个问题。
但是,将 rails 升级到 4.2.4 后,我得到了这个问题中描述的完全相同的错误:
Uncaught TypeError: $(...).select2 is not a function
我能够通过从我的 Gemfile 中删除 "select2-rails" gem 并将其替换为:
来解决错误
source 'https://rails-assets.org' do
gem 'rails-assets-select2', '~> 4.0.0'
end
在 rails 5 使用 CoffeeScript 和 turbolinks 我必须使用以下行:
$(document).on "turbolinks:load", ->
在一切之前,以便在加载带有 select 标记的所需页面时执行代码。
我已尝试为 the select2-rails gem 提供文档,但我的浏览器控制台仍然会引发错误。
Uncaught TypeError: $(...).select2 is not a function
我正在使用 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
<%= f.select(:team_id, @teams.collect {|p| [p.name, p.id]}, {include_blank: "None"}, {id: "team_select"}) %>
我做错了什么?感谢任何帮助。
问题肯定出在application.js:根据他们Demo App,需要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 .
我遇到了同样的问题,更改 JS 插件的顺序没有帮助。
我最终删除了 turbolinks,它现在可以正常工作了。可能不是最好的解决方案,但这是我经过几个小时的搜索后得到的最好的解决方案。
所以,基本上我从 application.js 文件中删除了那一行:
//= require turbolinks
我在使用 rails 4.1.5 和 select2-rails 3.5.9.3 时从未遇到过这个问题。 但是,将 rails 升级到 4.2.4 后,我得到了这个问题中描述的完全相同的错误:
Uncaught TypeError: $(...).select2 is not a function
我能够通过从我的 Gemfile 中删除 "select2-rails" gem 并将其替换为:
来解决错误source 'https://rails-assets.org' do
gem 'rails-assets-select2', '~> 4.0.0'
end
在 rails 5 使用 CoffeeScript 和 turbolinks 我必须使用以下行:
$(document).on "turbolinks:load", ->
在一切之前,以便在加载带有 select 标记的所需页面时执行代码。