🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

JavaScript

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

Q&A

2回答

3258閲覧

【Rails】JSのキャッシュを削除する方法

hurousyotoku500

総合スコア27

Ruby

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

Ruby on Rails 6

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

Ruby on Rails

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

キャッシュ

キャッシュはドキュメントやデータを一時的に保管するもので、アクセス処理時間を短くするために使用されます。

JavaScript

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

0グッド

1クリップ

投稿2021/01/24 22:16

編集2021/01/25 00:16

現在、RailsアプリにJSを使用しているのですが、JSが実行されずに困っております。

具体的には、現状このようにJSのコードを書いております。

application.js

1// app/javascript/packs/application.js 2 3// This file is automatically compiled by Webpack, along with any other files 4// present in this directory. You're encouraged to place your actual application logic in 5// a relevant structure within app/javascript and only use these pack files to reference 6// that code so it'll be compiled. 7 8require("@rails/ujs").start() 9require("turbolinks").start() 10require("@rails/activestorage").start() 11require("channels") 12 13 14// Uncomment to copy all static images under ../images to the output folder and reference 15// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) 16// or the `imagePath` JavaScript helper below. 17// 18// const images = require.context('../images', true) 19// const imagePath = (name) => images(name, true) 20//= require jquery 21//= require jquery_ujs 22 23console.log("hoge"); 24 25document.getElementById("eagle").onclick = function() { 26 console.log("hoge"); 27};

ですが、ブラウザ上には以前記述していたJQueryのコードに対して、エラーを出しています。
($は定義されていないと言っているかと思います)
JQueryは読み込んでいないので、エラーを出すのは当然かと思うのですが、
変更が反映されていないようです。
イメージ説明

// ブラウザ上で見えるソース(エラーを出している箇所) // This file is automatically compiled by Webpack, along with any other files // present in this directory. You're encouraged to place your actual application logic in // a relevant structure within app/javascript and only use these pack files to reference // that code so it'll be compiled. require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") // Uncomment to copy all static images under ../images to the output folder and reference // them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) // or the `imagePath` JavaScript helper below. // // const images = require.context('../images', true) // const imagePath = (name) => images(name, true) //= require jquery //= require jquery_ujs console.log("hoge"); $('#eagle').click(function() { console.log('クリックされました!'); })

ブラウザのキャッシュ の削除、railsサーバーの再起動、別のブラウザで表示をしてみましたが、どれも改善しませんでした。
application.js意外では、ajaxにより非同期で画面を更新する機能があり、JS自体は動いております。

railsアプリ内に消すべきキャッシュがあるのでしょうか。

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

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

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

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

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

m.ts10806

2021/01/24 22:53

Javascriptはエラーを感知したらそこで終了します。jQuery本体読み込ませてからでないと話は進まないのでは
hurousyotoku500

2021/01/24 23:03

今回はjQueryを使用したいわけではなく、生JSを読み込ませ、変更を反映させたいだけです。
m.ts10806

2021/01/24 23:17

読み込ませたところでjQuery参照のエラーが出ていれば使えない(反映確認できない)ということです。
hurousyotoku500

2021/01/24 23:37

実際記述しているコードにJQueryは書いていないので、正常に読み込めていれば、今回のエラーは出ないはずです。
m.ts10806

2021/01/24 23:51

提示されているコードはjQueryも書かれてます。
hurousyotoku500

2021/01/24 23:52

それは、ブラウザ上で見えるソースですね。
m.ts10806

2021/01/25 00:33 編集

あとは、修正後にきちんとコンパイルしているかどうか。キャッシュクリアはコンパイルできている前提です。 いずれにしても「jQueryを読み込ませるとどうなるか」は確認すべき項目。
guest

回答2

0

もしかして、「application.jsの変更後にプリコンパイルを実行していない」ということはないでしょうか?

なお、ローカル開発ではプリコンパイルを都度行わずに済むようにwebpack-dev-serverを常駐させるのが一般的です。

投稿2021/01/25 00:25

maisumakun

総合スコア145975

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

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

hurousyotoku500

2021/01/25 00:32

ありがとうございます。プリコンパイルというのはよく理解出来ていませんが、webpack-dev-serverなるものを導入してみます。
hurousyotoku500

2021/01/25 02:04

webpack-dev-serverですが、導入方法について色々調べてみましたが、webpackerばかり出てきてよく分かりませんでした。分かりやすい記事等、ご存知でしょうか?
guest

0

application.jsの22行目あたりでjQueryを参照して見つからないというエラーですね
application.jsを使うならjQueryを読み込み
jQueryを使いたくないならapplication.jsも諦めて下さい

投稿2021/01/25 00:12

yambejp

総合スコア116694

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

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

hurousyotoku500

2021/01/25 00:20

application.jsはJQueryを読み込まないとつかえないのですか? >>application.jsの22行目あたりでjQueryを参照して これは上記の質問分に書いてある通り、ブラウザ場で見えるソースで実際はこの記述は消してあります。なので、キャッシュが残っているのではと思って質問しています。 console.log("hoge")は問題なく実行できていますが、これはJQueryではないですよね?
yambejp

2021/01/25 00:29 編集

キャッシュが残っているかどうかはconsole.log("hoge")を console.log("fuga")にして確認して下さい
yambejp

2021/01/25 01:48

あとはjs呼び出して適当なパラメータをつけて読んでみてはどうでしょう? applocation.js?nocache=20210125104700
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問