如何获取 Rails 中供应商子文件夹内的资产?

How to fetch assets inside vendor subfolders in Rails?

我需要在我的应用程序中安装一系列库,将它们保存在 /vendor/plugins/

内各自的文件夹中

示例,ckeditor 库:

这样我就可以像这样导入到我的 application.scss 中:

*= require chart.min

在我的 application.js 中是这样的:

//= require Chart.js

当我尝试这样做时 rails 仅访问文件夹 /vendor/assets/plugins/ 插件,生成错误:

could not find file 'chart.min' with type 'text/css'

如何让项目扫描供应商的所有子文件夹,直到找到我正在导入的文件?

首先将/vendor/plugins目录加入assets加载路径:

module MyApp
  class Application < Rails::Application
    config.assets.paths << Rails.root.join("vendor", "plugins")
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.
  end
end

但是在资产加载路径中添加目录并不意味着 Sprockets 将递归搜索所有子目录。将其配置为这样做也不是一个好主意。

您仍然需要提供来自 /vendor/plugins 的完整路径。

app/assets/javascripts/application.js:

//= require ckeditor/js/Chart

app/assets/stylesheets/application.css:

*= require ckeditor/css/chart.min

或者您可以直接使用 Rails integration gem 并跳过所有麻烦。