在Ruby on Rails的HAML中,如何使用:sass过滤器?

nop*_*ole 7 haml ruby-on-rails sass

如果在Ruby on Rails上使用HAML,那么

:sass
  #someDiv
    border: 3px dashed orange
Run Code Online (Sandbox Code Playgroud)

<style>他们周围不会有任何标签.

然后

:css
  :sass
    #someDiv
      border: 3px dashed orange
Run Code Online (Sandbox Code Playgroud)

不会踢过:sass滤器,但是

:css
:sass
  #someDiv
    border: 3px dashed orange
Run Code Online (Sandbox Code Playgroud)

将踢过:sass滤器,但它在<style>标签之外.那么如何使用:sass滤波器呢?我们可以手动环绕<style>它,但是我们想要从sass生成css而不是<style>HAML文件中的标记内部并不常见.

Awg*_*wgy 12

与此问题相关的文档是在这里,在haml-lang.com和更详细的解释了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' %>
Run Code Online (Sandbox Code Playgroud)

如果你真的需要在haml中使用sass,就是答案.你不能在haml中嵌套过滤器.你显然需要做这样的事情:

%style(type="text/css") 
  :sass 
    div 
      color: red 
Run Code Online (Sandbox Code Playgroud)

我相信是haml google小组的原始回复.

  • 嗯......如果不应该在haml文件中使用sass,那么sass过滤器应该不存在? (4认同)

sam*_*sam 10

从4.0.0开始,

:sass现在,过滤器将其输出包装在样式标记中,new :less:scss过滤器也是如此.

在4.0.0之前,只需将其包装%style:

%style
  :sass
    // so sassy! ;)
Run Code Online (Sandbox Code Playgroud)