javascript - 如何在 Rails 6 中执行自定义 javascript 函数

标签 javascript ruby-on-rails webpacker

随着 Webpacker 到 Ruby On Rails 的到来,我找不到使用我的 JavaScript 函数的方法。

我有一个名为 app-globals.js 的文件,其中包含一个要测试的函数:

function alerts() {
  alert("TEST")
}

然后我想在我的一个 View 中使用它:

<% = button_tag 'Button', type: 'button', onClick: 'alerts ()'%>

但是当我按下按钮时,这个错误会显示在浏览器控制台中:

ReferenceError:未定义警报

  1. 我将 app-globals.js 文件放在 "app/javascript""app/javascript/packs/application.js " 我放置了 require ("app-globals")。

  2. 我将 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

关于javascript - 如何在 Rails 6 中执行自定义 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349091/

相关文章:

ruby-on-rails - 将应用程序部署到两个不同的服务器,具有不同的 production.rb 内容

ruby-on-rails - Rails 6 + Webpacker 添加和使用 yaml-loader

javascript - 如何在 Rails 6 应用程序中将变量传递给 javascript

Javascript 删除 object.property 不工作

javascript - Ionic/AngularJS - 没有 Controller 的 state.go

ruby-on-rails - 如何让 Sidekiq 工作人员在 Heroku 上运行

ruby-on-rails - 在 Rails 6.1 上使用咖啡装载机时出现 `this.getOptions is not a function` 错误

javascript - fullPage.js 从幻灯片 2 开始

javascript - 访问 jQuery 插件中的原始目标元素

ruby-on-rails - 按计数查询加快 Active Record 组