前提・実現したいこと
ruby on rails でアプリ制作中、
ユーザーページにそのユーザーの投稿を表示させる際、swiper.jsを導入したのだが、new Swiper以降の記述が反応しない。
発生している問題・エラーメッセージ
ドラッグしながらスクロールはできるのだが、また最初のslideまで戻ってしまう。
該当のソースコード
users/show.html.haml
ruby
1.swiper-container.swipes.p-2 2 .swiper-wrapper.p-1 3 - @posts.each do |post| 4 .events__content.col-sm-6.col-md-4.mb-3 5 .swiper-slide 6 .card{id: post.id} 7 %label.m-1 8 - if post.image.present? 9 %img.card-img-top.img-fluid.rounded{src: "#{post.image}"} 10 - else 11 %img.card-img-top.img-fluid.rounded{src: "/assets/noimage.png"} 12 .card-body.event 13 %h5= link_to "#{post.title}", post_path(post.id), class: "event-title stretched-link text-decoration-none" 14 .event__name 15 #{post.user.name} さん 16 .text-right 17 = l post.created_at, format: :long 18 .card.col-auto 19 .text-left 20 - post.genre_list.each do |genre| 21 .badge.badge-primary{data:{role: "tagsinput"}} 22 = link_to "#{genre}", tag_path(genre), class: 'text-decoration-none text-white' 23 - if user_signed_in? 24 .offset-8.col-auto.card 25 .text-center.likes 26 = render partial: '/posts/posts', locals: {post: post} 27 .swiper-button-prev 28 .swiper-button-next 29 .swiper-pagination 30= javascript_include_tag "https://unpkg.com/swiper/js/swiper.min.js"
application.html.haml
ruby
1!!! 2%html 3 %head 4 %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ 5 %title Moyoshi 6 = csrf_meta_tags 7 = csp_meta_tag 8 = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' 9 = stylesheet_link_tag "https://unpkg.com/swiper/css/swiper.min.css" 10 = javascript_include_tag "https://unpkg.com/swiper/js/swiper.min.js" 11 = javascript_include_tag 'application', 'data-turbolinks-track': 'reload' 12 %body 13 %header.navbar.navbar-expand-lg.bg-primary.row.shadow-sm.fixed-top.px-5 14 %h5.col-auto.text-left 15 = link_to "Moyoshi", "/", class: "app-name__logo text-decoration-none text-center text-white" 16 .col.text-left 17 - if user_signed_in? 18 = link_to "#{current_user.name}", user_path(current_user.id), class: "edit-user user-btn text-decoration-none mr-3 text-white" 19 = link_to "ログアウト", destroy_user_session_path, method: :delete, class: "user-logout user-btn text-decoration-none text-white" 20 - else 21 = link_to "新規登録", new_user_registration_path, class: "new-user user-btn text-decoration-none mr-3 text-white" 22 = link_to "ログイン", new_user_session_path, class: "user-login user-btn text-decoration-none text-white" 23 24 = yield 25 26 27 %footer.bg-primary.sticky-bottom 28 .text-center.py-3 29 = link_to "トップに戻る", root_path, class: "text-white text-decoration-none" 30 %copyright 31 .text-center 32 copyright 33
users/show.js
Javascript
1$(function(){ 2 console.log('OK'); 3 var mySwiper = new Swiper('.swiper-container', { 4 autoHeight: true, 5 loop: true, 6 freeMode: true, 7 slidesPerView: 3, 8 pagination: { 9 el: '.swiper-pagination', 10 type: 'bullets', 11 clickable: true 12 }, 13 navigation: { 14 nextEl: '.swiper-button-next', 15 prevEl: '.swiper-button-prev' 16 } 17 }); 18});
試したこと
swiper.jsのversionが古いことに気付き、新しいものに変えた。
new Swiper内の'.swiper-container'の部分を、'swiper-wrapper'や'swiper-slide'などのにしてみると、以下のエラーがconsoleで表示される。
console
1Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
'swiper-container'のままだと、何も反応しないし、その他のオプションを変更しても何も変化がないので、おそらく、new Swiperの部分がうまく読み込まれていないのだろう。
ちなみに、paginationも表示されていない。
補足情報(FW/ツールのバージョンなど)
Ruby 2.5.1
ruby on rails 5.2.4.2
bootstrap 4.4.1
jquery-rails 4.3.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。