我怎么能逃避&在哈姆尔,它编译成&而不是&? (Haml noob)

时间:2012-06-27 01:04:49

标签: haml

我正在尝试使用带有Haml的Icomoon图标字体,似乎无法找到逃脱&的方法,因此它只保留&而不是&

Icomoon字体允许您使用带有data-icon =“”属性的HTML实体。如果我只是做一个直接的HTML链接,那么在HTML中甚至在Haml文件中也能很好地工作。

然而,因为我正在学习Haml,我想我会看到这里是否有人想推荐最好的方法来解决这个问题。

以下是发生的事情的样本。

这是最初的Haml:

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

这是它的编译方式:

<a aria-hidden='true' data-icon='&amp;#x0026' href='/posts'>

这是编译图标字体的工作原理:

<a aria-hidden='true' data-icon='&#x0026' href='/posts'>

这里有一个codepen,你可以看到图标由放大器呈现的方式;另外:http://codepen.io/dandenney/pen/3/6

3 个答案:

答案 0 :(得分:3)

我不喜欢顶级海报完成这个问题的方式。到目前为止,我发现最好的方法是:

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

我对此并不满意,但认为对于rails应用程序更好,而不是在任何地方关闭HTML转发。

答案 1 :(得分:1)

您可以使用:escape_attrs option来控制属性中的HTML敏感字符是否已转义:

require 'haml'

haml = "%a(href='/posts' data-icon=\"&#x0026\" aria-hidden='true')"

puts Haml::Engine.new(haml, :escape_attrs => false).to_html

输出:

<a aria-hidden='true' data-icon='&#x0026' href='/posts'></a>

请注意,这将适用于Haml模板中的所有属性。

答案 2 :(得分:1)

在我看来,我不喜欢通常禁用该功能以逃避角色的想法。也许您在应用程序的某个时刻使用继电器。

对我来说,最好的办法是:

%a{ href: '/', 'data-icon' => "&#10000;".html_safe }