Почему jQuery не загружается в моем приложении Rails 3.2.3?

До вчерашнего дня jQuery загружался очень хорошо в моем приложении Rails. Я играл с получением установленного отладчика/рубинового отладки. Поскольку вы, вероятно, знаете, что есть проблемы с камнем отладчика в Rails 3, и я не увенчался успехом в создании зависимостей, поэтому я удалил драгоценные камни из своего Gemfile. С тех пор при загрузке моего сайта jQuery не загружается. Это сообщения, которые я вижу в консоли:

assets/jquery_ujs.js?body=1:377Uncaught ReferenceError: jQuery is not defined
bootstrap-transition.js:24Uncaught TypeError: undefined is not a function
bootstrap.js:3Uncaught ReferenceError: jQuery is not defined
welcome:210Uncaught ReferenceError: $ is not defined

И вот мой файл application.js:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .

Если я загружаю jQuery явно в layouts/application.html.erb, вот так:

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" %>
<%= javascript_include_tag "application" %>

Любые мысли о том, что я могу сделать, чтобы решить эту проблему и снова загрузить jQuery? Глядя в .rvm/gems/ruby-1.9.3-p125/gems/jquery-rails-2.0.2/vendor/assets/javascripts Я вижу, что jquery.js и jquery.min.js все еще существуют.

Ответ 1

Спасибо @Djj. Повторное упорядочение моего дерева application.js, похоже, решило проблему. Вот мое измененное дерево:

//= require jquery_ujs
//= require jquery
//= require twitter/bootstrap
//= require jquery.placeholder
//= require_tree .

Ответ 2

В моем случае проблема заключалась в асинхронной загрузке файла javascript.

<%= javascript_include_tag "application", :async => true %>

Возврат к

<%= javascript_include_tag "application" %>

решил проблему.

Ответ 3

После долгого времени это решило мою проблему с ошибкой.

Убедитесь, что JQuery загружен только один раз.

Включить gem 'jquery-rails' в Gemfile и сделать $ bundle install

Обязательно включите их в файл app/assets/javascripts/application.js.

//= require jquery
//= require jquery_ujs

Синтаксис, когда он неправильный, как // require jquery, приводит к загрузке jquery.

Если все включено правильно, источник страницы вашего html файла должен показывать все исходные файлы.

Для меня у меня была проблема, потому что я явно загружал источники плагина jquery из google в application.html.erb в приложениях/представлениях/макетах, кроме необходимости в файле application.js в приложении /assets/javascript. Это вызвало повторение определения jquery и появление нескольких ошибок, таких как placeholder(), oApi, не определенных для null.