如果在Ruby on Rails上使用HAML,那么
:sass
#someDiv
border: 3px dashed orange
周围不会有任何<style>
标记。
然后
:css
:sass
#someDiv
border: 3px dashed orange
不会启用:sass
过滤器,但
:css
:sass
#someDiv
border: 3px dashed orange
将启用:sass
过滤器,但它位于<style>
标记之外。那么如何使用:sass
过滤器呢?我们可以在它周围手动包装<style>
,但我们想要从sass生成css而不是在HAML文件中的<style>
标记内生成css并不常见。
答案 0 :(得分:12)
与您的问题相关的文档是haml-lang.com上的here以及sass-lang.com处的更详细说明。
我相信你缺少的是不应该在你的haml文件中使用sass。它们应放在带有.sass扩展名的public / stylesheets / sass中。它们将被编译为public / stylesheets中的.css文件,然后将其链接到您的布局中。
来自sas-lang.com链接:
例如,public / stylesheets / sass / main.scss将编译为public / stylesheets / main.css。
然后,您将使用stylesheet_link_tag帮助程序(或手动链接样式表):
<%= style_sheet_link_tag 'main' %>
如果你真的需要在haml中使用sass,here就是答案。你不能在haml中嵌套过滤器。你显然需要这样做:
%style(type="text/css")
:sass
div
color: red
我相信this是来自haml google群组的原始回复。
答案 1 :(得分:10)
:sass
过滤器现在将其输出包装在样式标记中,新的:less
和:scss
过滤器也是如此。
在4.0.0之前,只需将其包装在%style
:
%style
:sass
// so sassy! ;)
答案 2 :(得分:2)
您也可以编写自定义过滤器来生成样式标记。
下面的示例定义了一个新的':csass'过滤器。
require "haml/filters"
module Haml::Filters::Csass
include Haml::Filters::Base
include Haml::Filters::Sass
lazy_require 'sass/plugin'
def render(text)
src = super
"<style>#{src}</style>"
end
end
所以你可以这样做:)
:csass
#someDiv
border: 3px dashed orange