我在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,但我不确定。
所以我看到了一些选择。我可以:
<%= asset_path('random/asset.png') %>
。这使得我的语法高亮显示器非常困惑,并且可能效率不高。否则,这有效。_lionbars.css.scss
并致电@import "lionbars"
。我不想这样做的两个原因是#1一般来说我不想接触销售代码,#2那里有一些IE8特定的东西(<!--[if IE 8]>blahblah<![endif]-->
)不能进入scss文件,我不想打破文件(我仍然需要找到IE8代码的解决方案以及如何包含它)。所以,我希望答案是#1,但我不确定。有什么想法吗?
答案 0 :(得分:1)
sass-rails以asset-path
等资产助手为特色。否则,Sass和Compass没有asset-path
的任何概念。
Alternitavely,您可以在config.rb中使用add_import_path
。 See 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页面明确不赞成的解决方案感到非常兴奋。