railsに少し慣れてきた初心者です。
rails/webpackへのjQueryプラグインの導入がいまひとつ理解できてなく苦戦してます。
rails 6.1
venobox 1.9.2
開発 Ubuntu
本番 Heroku
前提・実現したいこと
画像スライダーの「venobox」というjQueryプラグインを使いたい
発生している問題・エラーメッセージ
サムネ画像をクリックすると拡大画像が開くのが正常な動作なのですが、
本番環境で動かすと、おかしな場所(ページ最下部)に表示され、閉じるボタンやカーソルアイコンが表示されません。
ブラウザのconsoleにエラーは出てません。
本番環境(heroku)で正常に動作できません。
該当のソースコード
正しい書き方か分かってないですが
application.jsに書かず、item/show側からjsを利用するようにしてました。
app\views\items\show.html.erb
※ページ最下部で呼ぶ
ruby
1<%= javascript_pack_tag 'items/venobox' %>
app\javascript\packs\items\venobox.js
javascript
1import '../plugin/venobox/venobox.css' 2const venobox = require ('../plugin/venobox/venobox') 3 4$(document).on("turbolinks:load", () => { 5 $(function() { 6 $('.venobox').venobox({ 7 infinigall: true, 8 numeratio: true, 9 }); 10 }); 11}); 12
venobox本体は、以下に置いてます。
app\javascript\packs\plugin\venobox
開発環境側ではこれで正常に動作してます。
試したこと
本番環境ではプラグインが正常に読み込めてないと考え、プラグインの「読み込み方」を変えてみました。
application.jsで読むようにしました。
\app\javascript\packs\application.js
javascript
1 2import Rails from "@rails/ujs" 3import Turbolinks from "turbolinks" 4import * as ActiveStorage from "@rails/activestorage" 5import "channels" 6import '../stylesheets/style.css' 7 8 9// jquery 10var jQuery = require('jquery') 11global.$ = global.jQuery = jQuery; 12window.$ = window.jQuery = jQuery; 13 14 15// 画像ファイル 16const images = require.context('../images', true) 17 18// ここでプラグインを読み込む 19import '../packs/plugin/venobox/venobox.css' 20const venobox = require ('../packs/plugin/venobox/venobox') 21$(function() { 22 $('.venobox').venobox({ 23 infinigall: true, 24 numeratio: true, 25 }); 26});
この方法だと、おかしな場所に表示されることはなくなりましたが、
初回表示だけ、相変わらず閉じるボタンとカーソルが表示されません。
2回クリックするか「更新」しないと正常に表示されませんでした。
もう一歩の所まで来てそうですがここから分かりません。
先輩方どうか教えていただけないでしょうか?
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。