如何获取 Rails 中供应商子文件夹内的资产?
How to fetch assets inside vendor subfolders in Rails?
我需要在我的应用程序中安装一系列库,将它们保存在 /vendor/plugins/
内各自的文件夹中
示例,ckeditor 库:
/vendor/plugins/ckeditor/
中的主文件夹
- js 文件在
/vendor/plugins/ckeditor/js/Chart.js
- css 文件在
/vendor/plugins/ckeditor/css/chart.min.css
这样我就可以像这样导入到我的 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 并跳过所有麻烦。
我需要在我的应用程序中安装一系列库,将它们保存在 /vendor/plugins/
示例,ckeditor 库:
/vendor/plugins/ckeditor/
中的主文件夹
- js 文件在
/vendor/plugins/ckeditor/js/Chart.js
- css 文件在
/vendor/plugins/ckeditor/css/chart.min.css
这样我就可以像这样导入到我的 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 并跳过所有麻烦。