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

时间:2019-05-21 16:26:35

标签: ruby-on-rails ruby-on-rails-6

我目前正在尝试使用Rails 6.0.0.rc1,它似乎已将默认的javascript文件夹从app/assets/javascript移到了app/javascriptapplication.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文件?

4 个答案:

答案 0 :(得分:5)

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

为了拥有更好的组织代码并在application.html.erb文件中避免使用多个javascript_pack_tags,我建议采用以下方法:

  1. 将您的自定义{ "id": "774944", "general": { "presentable_id": "774944", "name": "Blekk BROTHER LC1280XLC blå", "description": "" }, "brand": { "name": "Brother Norge AS" }, "images": { "primary": { "large": "https://i.imgur.com/zYcibjw.jpg" } } } javascript文件添加到$post = Post::find(12892); //change with your id. // get all the users. $users = User::all(); foreach($users as $user){ $newPost = $post->replicate(); $newPost->user_id = $user->id; // save post. $newPost->save(); }
  2. example.js添加到您的app/javascript/packs文件中。

我希望它有用:)

答案 1 :(得分:2)

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

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

出于测试目的,在其中写入任何console.log

// app/javascript/packs/custom.js

console.log("custom js file loaded")

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

<%= javascript_pack_tag 'custom', 'data-turbolinks-track': 'reload' %>

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

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

custom js file loaded

在浏览器控制台中

希望它会有所帮助:)

答案 2 :(得分:0)

我知道这个问题已经回答。但是我也想贡献我的答案。 默认情况下,在Rails 6中,它使用webpack来编译js和css。

通过使用Require()或导入,您可以轻松地在应用程序中包含js

  1. 在app / javascripts / packs中创建您的自定义js文件。 例如:app / javascripts / packs / custom.js
  2. 在application.js(默认情况下,它位于packs文件夹中)中,导入自定义js文件。 EX:导入“ ./custom.js”
  3. 在您的application.html.erb中使用此标记 <%= javascript_pack_tag'application','data-turbolinks-track':'reload'%> 。< / li>
  4. Rake资产:预编译

现在刷新页面,当然可以了。

如有其他疑问,请参阅我的博客。 Rails 6 - Webpacker

答案 3 :(得分:0)

我的自定义js具有将由服务器html页面的嵌入式javascript调用的功能。以下片段在webpacker编译的Rails6中工作:

  1. 将自定义js文件放入文件夹 app / javascript / packs 中,例如app / javascript / packs / my_functions.js

say_hello = function(a_text){ 
    console.log("HELLO "+ a_text);  
}

  1. 在html文件中添加 javascript_pack_tag ,例如index.html.erb。

<%= javascript_pack_tag 'my_functions' %>
<!-- html here -->

<script>
$(document).ready(function(){
    say_hello('ABer')
});
</script>

注意:此行位于html主体内,而不位于头部

<script src="/packs/js/my_functions-1db66368ebbd2fe31abd.js"></script>