Я хочу использовать статические файлы javascript, не используя драгоценные камни в моем приложении rails. Мой application.js
выглядит так
//= require jquery
//= require bootstrap
//= require owl-carousel
//= require rails-ujs
И весь Js файл, который я должен добавить в папку javascript, без использования какого-либо драгоценного камня, использующего конвейер активов. Конечный результат, который я хочу. Но в моем rails приложение javascript не работает или не загружается. Мой application.css.scss
выглядит так:
@import "bootstrap";
@import "style";
@import "owl-carousel";
И код index.html.erb
<div class="app_screenshots_slides owl-carousel">
<div class="single-shot">
<%=image_tag("scr-img/1.png", alt: "")%>
</div>
<div class="single-shot">
<%=image_tag("scr-img/2.png", alt: "")%>
</div>
<div class="single-shot">
<%=image_tag("scr-img/3.png", alt: "")%>
</div>
<div class="single-shot">
<%=image_tag("scr-img/4.png", alt: "")%>
</div>
<div class="single-shot">
<%=image_tag("scr-img/1.png", alt: "")%>
</div>
<div class="single-shot">
<%=image_tag("scr-img/3.png", alt: "")%>
</div>
</div>
Все ваши javascripts на самом деле загружены, но проблема в том, что вы не инициализируете плагин совой карусели. Просто добавь
$(document).ready(function () {
$(".owl-carousel").owlCarousel();
});
в boottom вашего home/index.html.erb
или в вашем соответствующем файле js, чтобы он работал.
Изменить - Исправить для вашей текущей настройки
Проблема заключается в том, что ваш плагин инициализирован до загрузки вашего фактического html. Возможные исправления
1.Change
(function ($) {
'use strict';
// :: 1.0 Owl Carousel Active Code
if ($.fn.owlCarousel) {
$(".welcome_slides").owlCarousel({
items: 1,
loop: true,
autoplay: true,
smartSpeed: 1500,
nav: true,
navText: ["<i class='pe-7s-angle-left'</i>", "<i class='pe-7s-angle-right'</i>"]
});
$(".app_screenshots_slides").owlCarousel({
items: 1,
loop: true,
autoplay: true,
smartSpeed: 800,
margin: 30,
center: true,
dots: true,
responsive: {
0: {
items: 1
},
480: {
items: 3
},
992: {
items: 5
}
}
});
}
})(jQuery)
; в assets/javascripts/owl-carousel.js
для
$(document).ready(function () {
if ($.fn.owlCarousel) {
$(".welcome_slides").owlCarousel({
items: 1,
loop: true,
autoplay: true,
smartSpeed: 1500,
nav: true,
navText: ["<i class='pe-7s-angle-left'</i>", "<i class='pe-7s-angle-right'</i>"]
});
$(".app_screenshots_slides").owlCarousel({
items: 1,
loop: true,
autoplay: true,
smartSpeed: 800,
margin: 30,
center: true,
dots: true,
responsive: {
0: {
items: 1
},
480: {
items: 3
},
992: {
items: 5
}
}
});
}
});
2. Переместите свой javascript_include_tag
в свой application.html.erb
в нижней части страницы, перед тем, как </body>
3. Переместите скрипт инициализации карусели совы из owl-carousel.js
в ваш home/index.html.erb
Надеюсь, это поможет.
rails-ujs, введенный в Rails 5, не предназначен для использования jQuery - он был разработан, чтобы избавиться от зависимости jQuery.
См. Мой подробный ответ
application.html.erb
javascript_include_tag «application»