2013-04-15 5 views
0

В проекте Rails 3.2 У меня есть application.js файл, который выглядит следующим образом:Rails-конвейер ресурсов и плагины jquery. Что мне не хватает?

//= require jquery 
//= require jquery.hoverIntent 
//= require jquery_ujs 
//= require my_custom_js 

И в моем макете мы просто ссылки <%= javascript_include_tag 'application' %>

Код в my_custom_js.js фактически использует плагин от jquery.hoverIntent.js, но когда я загружаю страницу, я получаю ошибку javascript, говорящую, что нет никакой функции hoverIntent, доступной на объекте, хотя я могу проверить элементы и увидеть полезные ссылки на существующие файлы.

Кикер здесь состоит в том, что если я переведу эти две ссылки из application.js он загружается просто отлично. то есть:

<%= javascript_include_tag 'application' %> 
<%= javascript_include_tag 'jquery.hoverIntent' %> 
<%= javascript_include_tag 'my_custom_js' %> 

Что мне здесь не хватает?

+0

Вы используете драгоценный камень «jquery-rails»? Если вы используете драгоценный камень «jquery-rails». не требуется jquery в application.js –

+0

Я использую jquery-rails, но в соответствии с их документами (https://github.com/indirect/jquery-rails) вы должны включить require jquery и потребовать jquery_ujs в приложении. JS. Если я удалю эти строки, я получаю «$», не определен, а «jQuery» не определяется ошибками. – zacharydanger

+0

Нет, я имел в виду, что вам просто нужно вначале потребовать jquery_ujs, не нужно требовать jquery –

ответ

0

в вашем /layouts/application.html.erb, добавьте эти фрагменты в свой раздел head для загрузки jquery.

<%= javascript_include_tag "jquery" %> 
<%= javascript_incldue_tag 'jquery.hoverIntent' %> 
<%= javascript_incldue_tag 'my_custom_js' %> 

это загрузит jquery на все ваши страницы.

Если вам нужна дополнительная информация о том, почему application.js не работает, прочитайте this, чтобы узнать больше. Моя единственная идея заключается в том, что ваш плагин не назван jquery.hoverIntent, или ваши пути неверны.

+0

Правильно, и это хорошо работает, но почему версия 'application.js' не работает? Разве это не должно быть функционально эквивалентным? – zacharydanger

+0

Я обновил свой ответ –

+0

Пути загружаются отлично. В режиме разработки он показывает включенные файлы с нужным контентом для плагина и моего javascript. Кажется, это завинчивается с порядком загрузки, и я не знаю, почему. – zacharydanger

0

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

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