Escape / Ignore специальные символы в атрибутах HAML - PullRequest
4 голосов
/ 29 октября 2010

Я использую HAML для создания HTML-шаблонов, но у меня проблема с написанием атрибутов, которые будут заменены шаблонами строк JavaScript.

Рассматриваемая строка выглядит следующим образом:

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

HAML пытается кодировать теги <% =%>:

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

Я не хочу, чтобы это случилось в этом случае ... Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

В следующей версии Haml (3.1) будет опция :escape_attrs, которую вы сможете установить на false, чтобы предотвратить это. Вы также сможете передать --no-escape-attrs в командной строке. Чтобы использовать это прямо сейчас, вы можете установить альфа-версию с gem install haml --prerelease.

0 голосов
/ 30 ноября 2018

Как @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">

Для вас может не работать noпробелы (<% = field_name%>), но если вам нужна шаблонная логика, которая требует пробелов, добавьте .dot-класс в текст ...

0 голосов
/ 20 октября 2015

От этого ответа используйте отдельную переменную ruby ​​с html_safe:

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