2

我正在尝试将 Icomoon 图标字体与 Haml 一起使用,但似乎无法找到一种方法来逃避它,&以便它保持只是一个&而不是&.

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'>

这是一个代码笔,您可以在其中查看由于放大器而导致的图标呈现方式;补充:http ://codepen.io/dandenney/pen/3/6

4

3 回答 3

3

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

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

我对此并不完全满意,但认为这对 Rails 应用程序来说比关闭到处转义的 HTML 更好。

于 2013-03-14T10:02:58.130 回答
2

您可以使用该:escape_attrs选项来控制是否对属性中的 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 模板中的所有属性。

于 2012-06-27T02:38:51.967 回答
1

在我看来,我不喜欢禁用该功能以通常转义字符的想法。也许您在应用程序中的某个时候使用中继。

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

%a{ href: '/', 'data-icon' => "&#10000;".html_safe }
于 2014-06-08T11:58:55.800 回答