代码之家  ›  专栏  ›  技术社区  ›  Artur Haddad

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

  •  2
  • Artur Haddad  · 技术社区  · 6 年前

    我需要在我的应用程序中安装一系列lib,并将它们保存在各自的文件夹中 /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'
    

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   max    6 年前

    首先添加 /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
    

    但是,将目录添加到资产加载路径并不意味着链轮将递归搜索所有子目录。对其进行配置也不是一个好主意。

    你仍然需要提供一个完整的路径 /供应商/插件 .

    app/assets/javascripts/application.js:

    //= require ckeditor/js/Chart
    

    app/assets/stylesheets/application.css文件:

    *= require ckeditor/css/chart.min
    

    或者你可以用 Rails integration gem 省去所有的麻烦。