2012-02-13 34 views
2

我在供应商/资产/样式表中有一个CSS文件,并且我想在我的application.css.scss文件中链接到它(或左右)。我希望这将只呈现@import加上资产路径:从SCSS/Rails 3.2导入一个CSS文件w/sass-rails

@import asset-path('lionbars.css', stylesheet) 

但没有这样的运气:我得到

Invalid CSS after "@import ": expected uri, was "asset-path('lio..." 

要么我有语法错误,或者是因为@import doesn't accept dynamic strings,但我不确定。

所以我看到几个选项。我可以:

  1. 找出适当的语法,如果它只是一个语法问题。
  2. 将我的文件重命名为application.css.scss.erb,并将其他现有资产路径引用替换为<%= asset_path('random/asset.png') %>。这使得我的语法高亮显得非常混乱,可能并不是那么有效。否则,这是有效的。
  3. 将我的css文件重命名为_lionbars.css.scss并致电​​。我不希望这样做的两个原因是#1,一般来说我不想触及自营代码,#2有一些IE8特定的东西(<!--[if IE 8]>blahblah<![endif]-->),它们不能进入scss文件,并且我不想打破文件(我仍然需要找到IE8代码的解决方案,以及如何包含它)。

所以,我希望答案是#1,但我不确定。有任何想法吗?

+0

选项#2对我很好,似乎遵循Rails指南中的[资源编码链接](http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets)部分。 – MusikAnimal 2012-12-20 18:37:20

回答

0

sass-rails网站是相当清楚的:

链轮提供了一些指令,它们被放置的意见被称为内需要,require_tree和require_self。 请勿将它们用于您的SASS/SCSS文件

...但我想它在这两个开发和生产直线上升CSS文件和它的工作只是罚款:

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* ... 
* 
*= require_self 
*= require_tree . 
*= require lionbars 
*/ 

所以除非有人有一个更好的主意,这就是我我会去做的。我不得不将IE8特定的注释移动到我的布局中,因为Sprockets试图编译它,但我仍然觉得这比替代方案更容易。如果你有比这更好的解决方案,我很高兴听到它!我对使用在sass-rails页面上明确不满的解决方案并不兴奋。

1

sass-rails功能资产助手,如asset-path。否则,Sass和Compass没有任何asset-path的概念。

另外,你可以在你的config.rb中使用add_import_pathSee Compass Configuration Reference

+0

是的,我正在使用sass-rails。我提到我有其他现有的资产路径引用,并且它们工作得很好,我只是希望它在我导入CSS文件时也能正常工作。 – carpeliam 2012-02-14 19:00:13

+0

我添加了一个事实,即我在标题中使用sass-rails。我最终使用了sass-rails解决方案,明确地(着重)劝阻,但如果你想更好,请让我知道! – carpeliam 2012-03-24 18:45:12

1

正确的解决方案:@import 'lionbars'。 Sass-rails自定义@import指令以自动使用资产管道。

+1

这对我来说非常好。谢谢!比'require'好得多,因为它允许不同的SCSS文件共享变量,函数,混合等。 – 2017-01-14 12:47:55

相关问题