如何在Rails 6中要求自定义JS文件

Sev*_*rin 13 ruby-on-rails ruby-on-rails-6

我目前正在尝试将Rails 6.0.0.rc1的默认javascript文件夹从app/assets/javascript移到app/javascript。该application.js文件现在位于中app/javascript/packs。现在,我想添加几个js文件,但是由于某种原因,它们没有被导入,并且我找不到关于如何在Rails 6中完成此操作的任何文档。我尝试了一些方法:

  1. custom_js在下创建一个新文件夹app/javascript/packs,将所有我的js文件放在其中,然后将添加require "custom_js"到application.js。

  2. 复制下我所有的js文件app/javascript/channels(这应该是默认包括在内,因为application.js有require("channels"))。

  3. 添加require_tree .到application.js,这是以前的方法。

如何在Rails 6应用程序中加载自己的js文件?

Oli*_*ing 19

使用以下方法,获取组织更好的代码,并避免在application.html.erb文件中使用多个javascript_pack_tags:

  1. 将您的自定义example.jsjavascript文件添加到中app/javascript/packs。
  2. 添加require("packs/example")到您的application.js文件。

我希望对Asim Hashmi的正确答案添加评论。但是我没有足够的声誉,因此我将建议添加为答案。

不需要在require中包含“ .js”扩展名。

  • 例如:user/index.js、user/show.js、user/form.js (3认同)
  • 如何为每个控制器操作指定特定的js文件? (2认同)

asi*_*hmi 11

您需要执行以下步骤,将自定义javascript文件添加到Rails 6(webpacker)

1。custom.js在app/javascript/packs目录中创建您的自定义文件。

为了进行测试,请console.log在其中写入任何内容。

// app/javascript/packs/custom.js

console.log("custom js file loaded")
Run Code Online (Sandbox Code Playgroud)

2。转到您的,application.html.erb然后在您的末尾添加以下行<head></head>

<%= javascript_pack_tag 'custom', 'data-turbolinks-track': 'reload' %>
Run Code Online (Sandbox Code Playgroud)

3。现在执行,rake assets:precompile 这将打包您的javascript代码(包括我们刚刚添加的自定义文件)

现在重新加载页面,您应该会看到消息

custom js file loaded
Run Code Online (Sandbox Code Playgroud)

在您的浏览器控制台中

希望能帮助到你 :)

  • 这是最好的答案。 (3认同)
  • 这不是理想的做法...... (2认同)