質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

2回答

3164閲覧

new Swiperを読み込んでくれない

SomaSekimoto

総合スコア9

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2020/03/31 08:25

編集2020/04/01 08:47

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

html.hamlの記述で、swiper-container, swiper-wrapper, swiper-slideの階層構造がきちんと親子孫の形になっていなかったのが原因でした。お騒がせしました。

前の記述では、swiper-wrapperの後に、events__contentのdivがあったのですが、修正して、events__conentとswiper-slideを同じdivのクラスとしてまとめた結果、うまく動作しました。

html.haml

.swiper-container.p-2.rounded .swiper-wrapper.p-1 - @posts.each do |post| .swiper-slide.events__content.col-sm-6.col-md-4.mb-3 .card{id: post.id} %label.m-1 - if post.image.present? %img.card-img-top.img-fluid.rounded{src: "#{post.image}"} - else %img.card-img-top.img-fluid.rounded{src: "/assets/noimage.png"} .card-body.event %h5= link_to "#{post.title}", post_path(post.id), class: "event-title stretched-link text-decoration-none" .event__name #{post.user.name} さん .text-right = l post.created_at, format: :long .card.col-auto .text-left - post.genre_list.each do |genre| .badge.badge-primary{data:{role: "tagsinput"}} = link_to "#{genre}", tag_path(genre), class: 'text-decoration-none text-white' - if user_signed_in? .offset-8.col-auto.card .text-center.likes = render partial: '/posts/posts', locals: {post: post} - if @posts.count >= 4 .swiper-button-prev .swiper-button-next .swiper-pagination

投稿2020/04/02 01:11

SomaSekimoto

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ざっと見ただけですが、下記コードをusers/show.htmlとapplication.htmlで2回読み込んでいるので、まず1回にする。

javascript_include_tag "https://unpkg.com/swiper/js/swiper.min.js"

そのうえで動かないようであれば、下記を参考に見直してみてはいかがでしょうか?
https://qiita.com/emincoring/items/18d07d0aec5d9836227c

投稿2020/04/01 08:58

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SomaSekimoto

2020/04/02 01:06

返信ありがとうございます!! 別のことが原因だということがわかり、無事解決できました! ご協力ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問