【发布时间】:2026-01-16 15:50:02
【问题描述】:
这里是 Rails 初学者!
我正在尝试通过资产管道加载 .js 文件。正如Rails Guides中提到的:
2.2.1 搜索路径
当从清单或助手中引用文件时,Sprockets 会在三个默认资产位置中搜索该文件。
默认位置为:
app/assets下的images、javascripts和stylesheets目录
每当我运行rails new my_project 时,Rails 不会生成app/assets/javascripts 目录,也不会生成相关的宣言:
app/assets/
├── config
│ └── manifest.js
├── images
└── stylesheets
└── application.css
我手动添加了/app/assets/javascripts 目录和application.js 文件。以下是它的内容:
//= require mytheme/js/test # a simple alert('test')
//= require rails-ujs
//= require turbolinks
//= require_tree .
//= require mytheme/js/file1 # for each file of my theme
但没有弹出警报。 但是,使用浏览器检查模式的“网络”选项卡显示有一个 .js 文件(尽管与我的主题无关)。
我是否应该断定 Rails 正在使用另一个宣言来加载 .js 文件? 务实地说,我怎么能要求 Asset Pipeline 加载特定的 .js 文件?
初学者问题的长帖,感谢您的宝贵时间。
注意: 路径应该没问题,因为我的 css 使用相同的路径并且正在加载。我还添加了
Rails.application.config.assets.paths << Rails.root.join('vendor') 到config/initializers/assets.rb
【问题讨论】:
-
你在 Rails 6 上吗?
-
是的。我正在阅读发行说明,我确定您已经解决了我的问题
-
“让 Webpacker 成为 Rails 6 的默认 JavaScript 编译器。(拉取请求)”。谢谢你的好问题,我会在网上找到一些文档。
-
您始终可以像以前的 Rails 版本一样创建目录并链接到它。但是在 Rails 6 中你不会得到这个,除非你因为 webpacker 而做到了。
-
是的,我做到了,有很多关于这个主题的文档和文章(不过我必须了解更多关于它的信息)。我使用了 yarn 并需要 app/javascript/packs/application.js 中的文件
标签: ruby-on-rails asset-pipeline ruby-on-rails-6