Как я могу избежать & в Haml, чтобы оно компилировалось в & Вместо &? (ХАМЛ нуб)
Я пытаюсь использовать шрифт icomoon icon с Haml и не могу найти способ избежать &
, чтобы он оставался просто &
вместо &
.
Шрифт Icomoon позволяет использовать HTML-объекты с атрибутом data-icon="". Работает гладко, как масло в HTML и даже в файле Haml, если я просто делаю прямую ссылку HTML.
Тем не менее, поскольку я изучаю Haml, я подумал, что посмотрю, не хочет ли кто-нибудь здесь порекомендовать лучший способ подойти к этому.Вот пример того, что происходит.
Это оригинальный Haml:
%a(href='/posts' data-icon="&" aria-hidden='true')
Вот как он компилируется:
<a aria-hidden='true' data-icon='&#x0026' href='/posts'>
Вот как он должен компилироваться, чтобы шрифт значка работал:
<a aria-hidden='true' data-icon='&' href='/posts'>
А вот кодовая панель, где вы можете увидеть, как значок отображается из-за добавления amp;: http://codepen.io/dandenney/pen/3/6
3 ответа:
Вы можете использовать
:escape_attrs
опция для управления экранированием чувствительных символов HTML в атрибутах:require 'haml' haml = "%a(href='/posts' data-icon=\"&\" aria-hidden='true')" puts Haml::Engine.new(haml, :escape_attrs => false).to_html
Вывод:
<a aria-hidden='true' data-icon='&' href='/posts'></a>
Обратите внимание, что это будет применяться ко всем атрибутам в вашем шаблоне Haml.
Мне не понравился способ завершения этого вопроса на верхнем плакате. До сих пор лучший способ, который я нашел, это сделать:
- foo = "&".html_safe %a(href='/posts' data-icon=foo aria-hidden='true')
Я не совсем доволен этим, но думаю, что это лучше для rails-приложений, а не для отключения HTML, Бегущего повсюду.