Как я могу избежать & в Haml, чтобы оно компилировалось в & Вместо &? (ХАМЛ нуб)


Я пытаюсь использовать шрифт icomoon icon с Haml и не могу найти способ избежать &, чтобы он оставался просто & вместо &.

Шрифт Icomoon позволяет использовать HTML-объекты с атрибутом data-icon="". Работает гладко, как масло в HTML и даже в файле Haml, если я просто делаю прямую ссылку HTML.

Тем не менее, поскольку я изучаю 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'>

А вот кодовая панель, где вы можете увидеть, как значок отображается из-за добавления amp;: http://codepen.io/dandenney/pen/3/6

3 2

3 ответа:

Вы можете использовать :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.

Мне не понравился способ завершения этого вопроса на верхнем плакате. До сих пор лучший способ, который я нашел, это сделать:

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

Я не совсем доволен этим, но думаю, что это лучше для rails-приложений, а не для отключения HTML, Бегущего повсюду.

На мой взгляд, мне не нравится идея отключить функцию, чтобы избежать символов вообще. Может быть, вы используете реле в какой-то момент в вашем приложении на нем.

Для меня лучший способ сделать это:

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