SASS,Rails 3.1:在供应商/资产中加载样式表

Aks*_*wat 18 sass ruby-on-rails-3.1 sprockets

我正在使用SASS在Rails 3.1(sass-rails 3.1)应用程序中加载样式表.例如,app/assets/stylesheets使用@importin 加载sass partials in application.sass-

 @import "pages/common"
 @import "pages/**/*"
 @import "jquery-ui.css"
Run Code Online (Sandbox Code Playgroud)

现在,我也想加载vendor/assets/stylesheets.请注意,我没有使用require vendor,因为@import pages/*似乎是这样做的推荐方法.这里的文件将是css,而不是sassscss.我无法使用,@import ../../../vendor/assets/stylesheets/*因为它只适用于sassscss文件.

有没有办法做到这一点?

更新

我现在拥有的是这个.

application.css.scss

//= require_tree .
//= require vendor
//= require_self
Run Code Online (Sandbox Code Playgroud)

这包括上面提到的所有sass部分.将require vendor

vendor/assets/stylesheets/vendor.css 好像

//= require_tree .
Run Code Online (Sandbox Code Playgroud)

这种方法的一个警告是sass mixins(用户定义和插件)和公共变量在所有部分中都不可用.我现在拥有的是_common_imports.sass@import在所有部分中的第一件事.

common_imports.sass

@import "colors"
@import "compass/css3/gradient"
@import "compass/css3/border-radius"
@import "compass/css3/box-shadow"
Run Code Online (Sandbox Code Playgroud)

common_imports在所有部分中导入感觉非常重复.

Leo*_*Leo 22

如果我正确理解你,我认为这可能会有所帮助.

config/application.rbclass Application < Rails::Application块内添加以下内容:

config.sass.load_paths << File.expand_path('../../lib/assets/stylesheets/')
config.sass.load_paths << File.expand_path('../../vendor/assets/stylesheets/')
Run Code Online (Sandbox Code Playgroud)

我刚刚将上面的内容添加到应用程序中,以下指令现在都可以正常工作:

  • 导入Sass:
    @import 'grid'app/assets/stylesheets/application.css.scss查找文件中vendor/assets/stylesheets/_grid.scss;
  • 导入常规CSS:
    @import 'background'再次进入application.css.scss,查找vendor/assets/stylesheets/background.css.

这有帮助吗?对不起,如果我误解了这个问题!

  • 正确答案.我建议的只是清理更像是`config.sass.load_paths + =%w(供应商lib).map {| l | Rails.root.join(l,'assets','stylesheets')}`绕过相对路径并略微DRYer._尽管这并没有完全回答关于整个目录包含的原始问题_. (4认同)
  • 不再需要```config.sass.load_path```位. (3认同)