WebpackerがRuby on Railsに)登場したため、JavaScript関数を使用する方法を見つけることができません。
テストする関数を含むapp-globals.js
というファイルがあります。
function alerts() {
alert("TEST")
}
次に、それを私の見解の1つで使用したいと思います。
<% = button_tag 'Button', type: 'button', onClick: 'alerts ()'%>
しかし、ボタンを押すと、このエラーがブラウザコンソールに表示されます。
ReferenceError: alerts is not defined
app-globals.js
ファイルを"app/javascript"
に配置し、"app/ javascript/packs/application.js"
にrequire( "app-globals")を配置しました。
App-globals.jsを"app/javascript/packs"
に移動し、application.js
からrequire( "app-globals")を削除しました。
どちらの場合でも、エラーが表示されます。
ただし、回避策があります。あなたはできる:
以下から関数シグネチャを変更します。
function myFunction() { ... }
に:
window.myFunction = function() { ... }
だからあなたのコードでは以下のようにすることができます:-
app/javascript/packs/app-globals.js
window.alerts = function() {
alert ("TEST");
}
そして、このファイルをapplication.jsに要求します:-
app/javascript/packs/application.js
require("@Rails/ujs").start()
require("turbolinks").start()
require("@Rails/activestorage").start()
require("channels")
require("jquery")
import $ from 'jquery'
window.jQuery = $;
window.$ = $;
require("packs/app-globals") ## require your file