Joh*_* B. 8 javascript ruby-on-rails webpacker
随着 Webpacker 加入 Ruby On Rails,我找不到使用 JavaScript 函数的方法。
我有一个app-globals.js用函数调用的文件来测试:
function alerts() {
  alert("TEST")
}
然后我想在我的一个观点中使用它:
<% = 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 移至 .js"app/javascript/packs"并从application.js.
无论哪种情况,仍然会出现错误。
不过,有一个解决方法。你可以:
将函数签名从:
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