2015-05-30 6 views
7

Я пробовал данную документацию для the select2-rails gem, но в моей консоли браузера по-прежнему появляется ошибка.select2-rails gem не работает на Rails4

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"}) %> 

Что я делаю неправильно здесь? Любая помощь приветствуется.

+0

Вы проверили, действительно ли select2.js действительно загружается? –

+0

Поместить тур '// require select2' после всех плагинов JQUERY? И удалите «select» в селекторе jquery => $ ('# team_select'). Select2(); – p0k3

ответ

5

Проблема, безусловно, в application.js: Согласно их Demo App последовательность требует JS плагинов заключается в следующем:

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

В вашем случае, вы должны загрузить turbolinksперед темselect2 , что приводит к:

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

У меня была такая же проблема, и изменение порядка JS-плагинов не помогло.

Я закончил удаление turbolinks и теперь работает. Вероятно, это не лучшее решение, но это было лучшее, что я добился после нескольких часов поиска.

Так, основно я удалил эту строку из application.js файла:

//= require turbolinks 
+0

Вместо удаления '// = require turbolinks' мы можем изменить' link_to', например: '<% = link_to ('Giraffe', @giraffe, data: {no_turbolink: true})%>' [Ссылка] (http ://переполнение стека.com/questions/14227363/using-turbolinks-in-a-rails-link-to) – Prashant4224

1

Я никогда не столкнулся с этой проблемой при использовании рельсов 4.1.5 & Select2 рельсов 3.5.9.3. Однако после обновления рельсы 4.2.4, я получаю ту же самую точную ошибку, описанную в этом вопросе:

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

Я был в состоянии устранить ошибку, удалив «Select2 рельсы» драгоценный камень от моей Gemfile и замены она с:

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

спасибо за ссылку на rails-assets.org! – ryan2johnson9

1

на рельсах 5 с использованием CoffeeScript и turbolinks мне пришлось использовать строку:
$(document).on "turbolinks:load", -> , прежде всего, с тем, что код запускается на выполнение, когда запрашиваемая страница с выбором тегом загружаются.

Смежные вопросы