我目前正在尝试使用Rails 6.0.0.rc1,它似乎已将默认的javascript
文件夹从app/assets/javascript
移到了app/javascript
。 application.js
文件现在位于app/javascript/packs
中。现在,我想添加几个js文件,但是由于某些原因,它们没有被导入,并且我找不到关于如何在Rails 6中完成此操作的任何文档。我尝试了几件事:
在custom_js
下创建一个新文件夹app/javascript/packs
,将我所有的js文件放在此处,然后将require "custom_js"
添加到application.js
。
将我的所有js文件复制到app/javascript/channels
下(由于application.js
具有require("channels")
,因此该文件应默认包含在内)。
将require_tree .
添加到application.js
,这是以前的方法。
如何在Rails 6应用程序中加载自己的js文件?
答案 0 :(得分:5)
我想对Asim Hashmi的正确答案添加评论。但是我没有足够的声誉,因此我将建议添加为答案。
为了拥有更好的组织代码并在application.html.erb文件中避免使用多个javascript_pack_tags,我建议采用以下方法:
{
"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();
}
。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
现在刷新页面,当然可以了。
如有其他疑问,请参阅我的博客。 Rails 6 - Webpacker
答案 3 :(得分:0)
我的自定义js具有将由服务器html页面的嵌入式javascript调用的功能。以下片段在webpacker编译的Rails6中工作:
say_hello = function(a_text){
console.log("HELLO "+ a_text);
}
<%= 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>