转义/忽略HAML属性中的特殊字符

时间:2010-10-29 02:00:29

标签: javascript haml

我正在使用HAML制作html模板,但在编写将被JavaScript字符串模板替换的属性时出现问题。

有问题的行看起来像这样:

%div{:class => "<%= from_class %>"}

HAML尝试编码&lt;%=%&gt;标签:

<div class="&lt;%= from_class %&gt;">

我不希望在这种情况下发生这种情况......任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:4)

在下一版本的Haml(3.1)中,会有一个:escape_attrs选项,您可以将其设置为false以防止此情况发生。您还可以在命令行上传递--no-escape-attrs。要立即使用此功能,您可以使用gem install haml --prerelease安装alpha版本。

答案 1 :(得分:0)

this回答,使用带有html_safe的单独ruby变量:

- foo = "&#x0026".html_safe
%a(href='/posts' data-icon=foo aria-hidden='true')

答案 2 :(得分:0)

就像上面的@Natalie Weizenbaum和@rchampourlier状态一样,将其放在初始化程序中

config / initializers / haml.rb

Haml::Template.options[:escape_attrs] = false

还要注意,因为haml决定了它自己的类顺序:

这是由于空格:

.input-group-addon{class: "<%= field_name %>"}

将对此渲染,这不适用于模板:

<div class="%> <%= field_name input-group-addon">

解决方案是将点类(.input-group-addon)移至该类:text:

%div{class: "<%= field_name %> input-group-addon"} 

将呈现我们想要的内容:

<div class="<%= field_name %> input-group-addon">

不使用空格(<%= field_name%>)可能对您有用,但是如果您需要任何需要空格的模板逻辑,请在文本中添加.dot类...

相关问题