【问题标题】:Rails, missing /app/assets/javascripts directoryRails,缺少 /app/assets/javascripts 目录
【发布时间】:2026-01-16 15:50:02
【问题描述】:

这里是 Rails 初学者!

我正在尝试通过资产管道加载 .js 文件。正如Rails Guides中提到的:

2.2.1 搜索路径

当从清单或助手中引用文件时,Sprockets 会在三个默认资产位置中搜索该文件。

默认位置为:app/assets 下的imagesjavascriptsstylesheets 目录

每当我运行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


【解决方案1】:

您的应用程序布局中可能有默认的javascript_pack_tag,这是带有 webpacker 的 Rails 6 中的新默认值。

<%= javascript_pack_tag 'application' %>

为了使用你添加的js,你需要javascript_include_tag标签。就像以前版本的 Rails 一样。

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

这应该会加载那些 js 文件。

【讨论】: