Ruby on rails 如何在Rails 4中加载供应商资产文件夹?

Ruby on rails 如何在Rails 4中加载供应商资产文件夹?,ruby-on-rails,plugins,ruby-on-rails-plugins,Ruby On Rails,Plugins,Ruby On Rails Plugins,我有一个包含多种文件类型的插件,以及它自己的树结构(html、css、js、文档、图像等) 与其浏览插件文件夹,并将所有css和js文件拆分为vendor/assets/js/vendor/assets/css/文件夹,我只想保持整个插件文件夹的原样。比如说, 供应商/资产/多用途书架滑动条/ 如何确保路径正确加载,并在清单文件中引用它们 目前,我有一些文件放置如下(不详尽) 我在引用他们 application.js //= require multipurpose_bookshelf_sli

我有一个包含多种文件类型的插件,以及它自己的树结构(html、css、js、文档、图像等)

与其浏览插件文件夹,并将所有css和js文件拆分为
vendor/assets/js/
vendor/assets/css/
文件夹,我只想保持整个插件文件夹的原样。比如说,

供应商/资产/多用途书架滑动条/

如何确保路径正确加载,并在清单文件中引用它们

目前,我有一些文件放置如下(不详尽)

我在引用他们

application.js

//= require multipurpose_bookshelf_slider/js/jquery.easing.1.3.js
//= require multipurpose_bookshelf_slider/js/jquery.bookshelfslider.min.js
application.css.scss

@import "css/bookshelf_slider";
@import "css/skin01";

直接在
资产
下创建的任何文件夹都将添加到加载路径。可以像往常一样引用该文件夹中的文件,如下所示:

如果你有

  • vendor/assets/custom/js/file.js

  • //= require multipurpose_bookshelf_slider/js/jquery.easing.1.3.js
    //= require multipurpose_bookshelf_slider/js/jquery.bookshelfslider.min.js
    
  • vendor/assets/custom/css/file.css

  • @import "css/bookshelf_slider";
    @import "css/skin01";
    
然后将
供应商/资产/custom/
添加到加载路径

执行以下操作,将文件包括在以下文件中:

application.js

/=require js/file

application.css.scss

@import“css/file”

完成后,请确保重新启动本地服务器,因为只有在启动服务器时才能识别负载路径


注意:要查看加载路径列表,请在终端中键入
rails c
,然后键入
rails.application.config.assets.paths

如果正在运行的应用程序激活了资产管道,它应该在扩展应用程序中的路径后找到您的资产。rb

config.assets.paths << Rails.root.join("multipurpose_bookshelf_slider")

config.assets.paths我更喜欢D7na的答案,但我认为有一些改进

只要这与资产相关,我认为最好放在
assets.rb
文件中

资产.rb

Rails.application.config.assets.paths << Rails.root.join("multipurpose_bookshelf_slider")

Rails.application.config.assets.path为什么选择application.css.scss而不是application.css?对于初学者来说,这需要更多的解释。sscs是一个文件类型后缀。它使用sass/scss预处理器。在rails中,链接后缀使其按“语言”对应的最后一个后缀的顺序进行解析。问题是如何加载资产,而不管它是什么文件。如果有其他后缀的其他资产(例如jpg等),那么它们也将由正则表达式或文字字符串值匹配。对于初学者来说,整理东西是件好事。我确实认为这对这个问题无关紧要。哦,我明白你的意思了。scss文件不是“主”css文件application.css中引用的内容。但是,application.css本身发生了变化。说得对。我收回我认为这无关紧要的说法。答案很方便,虽然CSS预处理非常方便,而且SASS/SCSS是一个非常好的方法,但答案完全相同。其他人则更少。另一个是Stylus,我发现它的语法比其他两个都干净,但它周围的生态系统似乎较少。此外,如果您刚刚创建了
vendor/assets
目录,则需要重新启动服务器以加载
vendor/assets
下的文件。自定义文件夹下的图像将无法编译。您需要添加类似于
config.assets.precompile+=%w(*.png*.jpg*.jpeg*.gif)
的内容,因为vendor/和lib/下的所有内容都必须手动添加到预编译列表中。如果需要单独的file.js或file.css,还需要将其添加到预编译列表中。如果您没有看到它们,可能是因为您必须在添加新的供应商文件夹后重新启动应用程序-搜索路径仅在启动期间更新。