首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 6-加载自定义JS文件的正确方法是什么?

Rails 6-加载自定义JS文件的正确方法是什么?
EN

Stack Overflow用户
提问于 2021-05-01 12:37:32
回答 3查看 490关注 0票数 1

我很难正确配置和设置自己的JS文件,这些JS文件包含用于特定任务的JS函数。

我浏览了一些文章,发现我需要将我的自定义JS放在JS文件夹-> app/javascript/packs/currency_calculations.js中。

currency_calculations.js

代码语言:javascript
复制
function convert_curr(from, to) {
  ...
}

function show_convertion(curr) {
  ...
}
...

然后我尝试将这个自定义JS文件添加到app/javascript/packs/application.js

代码语言:javascript
复制
import Rails from "@rails/ujs";
import "@hotwired/turbo-rails";
import * as ActiveStorage from "@rails/activestorage";
import "channels";
import "controllers";

Rails.start();
ActiveStorage.start();

import "stylesheets/application";

// my custom JS file
import "packs/currency_calculations" // I also tried import "currency_calculations" -- same result

我还试图在application.html.erb文件中添加以下内容:

代码语言:javascript
复制
 = javascript_pack_tag 'currency_calculations'

这也没用。

我仍然收到这个错误:

代码语言:javascript
复制
Uncaught Error: Cannot find module 'currency_calculations'

当试图从视图调用函数时,则:

代码语言:javascript
复制
Uncaught ReferenceError: convert_curr is not defined

什么是正确的方法来连接这个?我在Rails 5中被用来将我的所有JS函数放到一个js文件中,而这个文件仅仅是为了像这样添加到一个app/assets/javascripts/application.js中:

代码语言:javascript
复制
//= require currency_calculations

然后,在视图中,我可以像convert_curr("a", "b")一样简单地调用想要的JS函数。

提前谢谢你。

EN

Stack Overflow用户

发布于 2021-05-01 15:37:34

在Rails 6中有几种方法可以做到这一点。

第一种方法是创建一个自定义目录,并在application.js文件中要求它。在本例中,您可以创建如下所示的目录:

代码语言:javascript
复制
app/javascript/custom/currency_calculations.js

然后,您需要在您的application.js文件中这样要求它:

代码语言:javascript
复制
// app/javascript/packs/application.js

// ...

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

require("custom/currency_calculations")

如果您将自定义文件夹命名为"currency“,然后将.js文件命名为index.js,则同样的方法也可以被简化。

然后你就可以这样称呼它:

代码语言:javascript
复制
require("currency")

默认情况下,Require将在文件夹中查找索引文件。但在这种情况下,必须存在一个索引文件,否则它将失败。

如果您不希望JS与其他所有内容一起编译,则另一种方法是使用javascript_pack_tag。

在这种情况下,将js文件添加到app/javascript/packs目录中。然后在需要它的地方使用pack标记助手,例如:

代码语言:javascript
复制
<%= javascript_pack_tag 'currency_converter' %>

我最不想提的是..。您确定不需要其他库来使其工作(如JQuery)吗?在这种情况下,您需要在调用要执行的js文件之前安装该库并将其导入application.js。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67346357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档