将子目录添加到 Rails 资产

Add subdirectories to Rails assets

我正在尝试将 Bootstrap 框架集成到 Rails 项目中。该框架附带了许多我想使用的 html 模板。每个模板都有几个指向资产(css、图像、js)的链接,这些链接的名称都类似于:

href="assets/css/stylesheet.css"

通过将框架的文件包含在 Rails vendor/assets 文件夹中,如果我将它们全部重命名为

,我可以访问所有这些资源
href="assets/stylesheet.css"

或使用 Rails 助手,但我不想对每一个资产都这样做,因为我宁愿尽可能多地保持框架完好无损以进行更新等,并且除此之外,处理起来会非常烦人。

有没有办法让 Rails 以当前写入的方式访问这些文件?

(例如,我知道 Laravel Elixir 可以做到这一点)。

此处的标准程序是在您的 application.css 或等效文件中添加对这些文件的引用。该主文件中通常有如下注释:

/*
 *= require_tree .
 *= require_self
*/

您可以手动将其他文件添加到其中,或者只是将您的资产放在那里,以便它们能够被资产管道正确地吸走。

这样做意味着当您将其投入生产时,它们都被打包到同一个可分发的 CSS 文件中。

如果您出于任何原因确实想单独编译它,您需要更改 config/initializers/assets.rb 并添加如下内容:

Rails.application.config.assets.precompile += %w[
  assets/stylesheet.css
]

这将强制编译另一个不相关的资产。