1

У меня возникло какое-то странное поведение с приложением Rails, которое я разрабатываю. Я пытаюсь использовать драгоценный камень jquery-tablesorter со смешанным успехом. В принципе, страница, которую я создал продолжает давать мне следующую ошибку в консоли после страницы LODs:Uncaught TypeError с jquery tablesorter (Rails, Turbolinks)

Uncaught TypeError: $(...).tablesorter is not a function 
(anonymous function) @ VM604:4 
m.Callbacks.j @ jquery.min.js:2 
m.Callbacks.k.add @ jquery.min.js:2 
m.fn.ready @ jquery.min.js:2 
(anonymous function) @ VM604:2 
executeScriptTags @ turbolinks.js?body=1:227 
changePage @ turbolinks.js?body=1:197 
xhr.onload @ turbolinks.js?body=1:107 

Странная вещь, что если я обновить страницу, когда он будет открыт и отображается сообщение об ошибке, то все работает отлично, без ошибок в консоли. Я предполагаю, что библиотеки jquery не загружаются до jquery-tablesorter. Более того, я подозреваю, что это имеет какое-то отношение к turbolinks, потому что раньше я получал аналогичную ошибку с драгоценным камнем twitter-boostrap-rails, но смог исправить ее, переупорядочив мой файл application.js. Но я ничего не могу исправить эту ошибку. Вот текущее состояние моего application.js файла:

//= require jquery 
//= require jquery.turbolinks 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require bootstrap-switch 
//= require jquery-tablesorter 
//= require_tree . 
//= require turbolinks 

Любое предложение, чтобы исправить ошибку оценили.

+1

На каком событии вы привязываете tablesorter к элементу? Не могли бы вы предоставить этот код? Я сделал пример, который использует turbolinks - может быть, это помогает: https://github.com/themilkman/tablesorter-demo – milkman

+0

Я привязываю его к документу следующим образом: ' ' – Dennis

ответ

1

Ну ... получается, у меня был трюк <script> в нижней части одной из моих страниц с того момента, когда я пытался поиграть с Google OAuth Sign-In. Этот тег <script> вызывал старую версию jquery, которая противоречила версии, которая должна была загружаться из моего файла application.js.

В любом случае, вытащил труп script, и он исправил все. Просто для справки это окончательный вариант application.js файл

//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require_tree . 
//= require bootstrap-switch 
//= require jquery-tablesorter 
//= require turbolinks 

Я думаю, что другие заказы могут работать тоже, но сейчас это не вызывает у меня никаких проблем.

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