Добавление flexslider вручную в приложение Rails 4 - ошибка типа flexslider не является функцией
Я пытаюсь исправить ошибку в приложении Rails 4. Flexslider в моем приложении не работает, изображения не загружаются вообще. В консоли это показывает - TypeError (..).flexslider
Это не функция. Тема прекрасно работает, если она не интегрирована в Rails. Это основанная на начальной загрузке тема со следующими конфигами - файл application.css.scss выглядит следующим образом
*= require_self
*= require font-config
*= require framework_and_overrides
*= require animate
*= require flexslider
*= require site-wide
Для файла application.js есть следующее -
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require flexslider
//= require cbpAnimatedHeader
//= require jqueryeasing
//= require jquerymousewheel
//= require classie
//= require scrollpage
//= require site
Пытался изменить их порядок несколько раз, но безрезультатно. Ползунки инициализируются следующим образом -
$(document).ready(function() {
$('#myCarousel').flexslider({
animation: "fade",
directionNav: false,
controlNav: false //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage
});
$('#slider').flexslider({
animation: "fade",
directionNav: true
});
});
Я новичок в Rails, пожалуйста, расскажите немного, я пытался решить эту проблему последние несколько часов.
Спасибо за ваше время.
Обновление: я использую начальные приложения RailsApps от Daniel Kehoe с помощью composer.
Обновление: я не установил flexslider, используя какой-либо драгоценный камень, так как драгоценный камень, который я нашел на сайте rubygems, использует более старую версию, т.е. flexslider 2.2 и я использую 2.4 .
Поэтому я пытаюсь сделать это вручную.
3 ответа
Хорошо, это мой первый раз, когда я интегрировал тему, основанную на начальной загрузке, разработанную вне среды rails и затем интегрированную в нее. вот как я решил проблему В файле application.js (файл манифеста) я добавил
//= require_self
сверху, как показано ниже:
//= require_self
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require flexslider
//= require cbpAnimatedHeader
//= require jqueryeasing
//= require jquerymousewheel
//= require classie
//= require scrollpage
//= require site
Поместить его где-нибудь между //= require jquery
а также //= require turbolinks
заставил мои слайдеры и даже модальные бутстрапы не работать. Так что после многих попыток я понял, это должно быть на вершине.
Как я узнал, почти каждый раз, когда я вчера проверял свой источник, я игнорировал application-[content hash].js, который располагался ниже всех файлов js, которые я упоминал в файле манифеста.
Сегодня я подумал, что этот файл создает проблему, и поскольку имя файла было application-[content hash].js, которое я использовал //= require_self
чтобы разместить его размещение жестко закодировано в самом файле. Я не знал о //= require_self
материал для js, так как я вижу, что он упоминается только в файле манифеста css, возможно, из-за моего путешествия с Rails 4.2 всего 5-6 месяцев. Так что у старшего разработчика рельсов может быть лучший способ сделать это.
Если кто-то может улучшить ответ или пролить немного света на него, я буду благодарен.
Спасибо ** Обновление - Хорошо, вот еще одна вещь, которую я узнал, я использовал стартовое приложение от Даниэля Кехо с помощью инструмента Composer, и оно содержало предварительно скомпилированные ресурсы в общедоступной папке, которые включались при использовании директивы require_self.
Ладно, мне тоже потребовалось время, чтобы понять это, но теперь работает потрясающе.
ШАГ 1:
Загрузите исходный код здесь: http://flexslider.woothemes.com/thumbnail-controlnav.html
ШАГ 2:
Затем получите три файла, как показано ниже:
1. /demo/css/flexslider.css
2. /fonts //yes, copy this entire folder that contains four files
3. /demo/js/jquery.flexslider.js
ШАГ 3:
Переместите первые два файла (1 и 2) в vender/assets/stylesheets и последний (3) в vender/assets/javascripts
ШАГ 4:
включите в application.css / sass сверху:
*= require flexslider
и включите в application.js:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery.flexslider
//= require_tree .
SETP 5:
Поместите ниже в application.js
$(window).load(function() {
$('.flexslider').flexslider({
animation: "slide"
});
});
Тогда вы получите базовый слайдер. Если вы хотите получить другие типы слайдеров, просто измените код JavaScript STEP 5 на то, что вы видите здесь: http://flexslider.woothemes.com/index.html
Так должно быть
*= require jquery.flexslider
вместо
*= require flexslider
Есть два камня flex slider
& flexslider-rails
: оба имеют одинаковый способ включения JavaScript. Смотрите документацию на тот, который вы используете.
https://github.com/constantm/Flexslider-2-Rails-Gem https://github.com/werein/flexslider-rails