我需要在我的应用程序中安装一系列lib,将它们保存在/vendor/plugins/
示例,ckeditor库:
/vendor/plugins/ckeditor/
/vendor/plugins/ckeditor/js/Chart.js
/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'
如何让项目扫描所有供应商的子文件夹,直到找到我导入的文件?
答案 0 :(得分:4)
首先将/vendor/plugins
目录添加到资产加载路径:
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
的完整路径。
应用程序/资产/ Javascript角/ application.js中:
//= require ckeditor/js/Chart
应用程序/资产/样式表/ application.css:
*= require ckeditor/css/chart.min
或者您可以使用Rails integration gem并跳过所有麻烦。