从SCSS / Rails 3.2 w / sass-rails导入CSS文件

时间:2012-02-13 19:51:43

标签: ruby-on-rails-3.1 compass-sass sass

我在vendor / assets / stylesheets中有一个CSS文件,我想在我的application.css.scss文件(或其附近)中链接到它。我希望这只会渲染@import加上资产路径:

@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并致电@import "lionbars"。我不想这样做的两个原因是#1一般来说我不想接触销售代码,#2那里有一些IE8特定的东西(<!--[if IE 8]>blahblah<![endif]-->)不能进入scss文件,我不想打破文件(我仍然需要找到IE8代码的解决方案以及如何包含它)。
  4. 所以,我希望答案是#1,但我不确定。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

sass-railsasset-path等资产助手为特色。否则,Sass和Compass没有asset-path的任何概念。

Alternitavely,您可以在config.rb中使用add_import_pathSee Compass Configuration Reference

答案 1 :(得分:1)

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

答案 2 :(得分:0)

sass-rails网站非常明确:

  

Sprockets提供了一些放在注释中的指令,名为require,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
*/

因此,除非有人有更好的想法,否则这就是我要做的。当Sprockets试图编译它时,我确实必须将IE8特定注释移动到我的布局中,但我仍然觉得这比替代方案更容易。如果你有比这更好的解决方案,我会很高兴听到它!我对使用sass-rails页面明确不赞成的解决方案感到非常兴奋。