Пустой атрибут с Ruby HAML - PullRequest
49 голосов
/ 05 июня 2011

Я реализую микроформаты Schema в проекте Ruby с использованием HAML и не могу понять, как установить пустой атрибут для тега. Я пробовал ноль и ложь, но они просто не отображаются.

Пример: <div itemscope>

Я пытаюсь установить пустой атрибут itemscope.

Код добавлен из комментария @StrangeElement:

Мой код:

.agency.premium{:itemscope => true, :itemtype => 'schema.org/ProfessionalService';} 

:itemscope => true кажется рекомендуемым подходом из документации HAML. Я получаю тот же результат, что и при использовании :itemscope => '', XHTML-допустимого атрибута с пустым значением (т.е. <div itemscope="">).

Вероятно, хорошо, но я бы предпочел, чтобы оно было пустым, как описано в документе Schema.

Ответы [ 3 ]

74 голосов
/ 06 июня 2011

Использование что-то вроде

%div{:itemscope => true}

- это правильный способ указать это в вашем файле Haml.

Способ визуализации зависит от того, как вы установили опцию Haml format..По умолчанию в Haml 3.1 xhtml, и при этом он будет отображаться как itemprop='itemprop', что является действительным xhtml.Для рендеринга с минимизированными атрибутами (например, <div itemscope>) необходимо установить формат html4 или html5.(В Rails 3 значение по умолчанию html5, а в Haml 4.0 значение по умолчанию html5).

Как установить параметры Haml, зависит от того, как вы их используете, см. Раздел параметров в документах .

Например, используя Haml непосредственно в Ruby, это:

engine = Haml::Engine.new '%div{:itemscope => true}'
puts engine.render

создает стандартный xhtml с полными атрибутами:

<div itemscope='itemscope'></div>

Но это:

engine = Haml::Engine.new '%div{:itemscope => true}', :format => :html5
puts engine.render

дает желаемый результат с минимизированными атрибутами:

<div itemscope></div>
0 голосов
/ 27 июня 2018

Принятый ответ работает, но он создает атрибут HTML со значением.

Если вы хотите, чтобы атрибут выводился только в HTML, без значения, вы можете использовать синтаксис в стиле HTML для HAML :

%div(itemscope)
0 голосов
/ 06 февраля 2017

Если кто-то заинтересован в том, чтобы таким образом выразить больше слов, он может использовать "foo bar" => true:

%option{ "disabled selected value" => true } Choose an option

, а результаты:

<option disabled="" selected="" value="">Choose an option</option>

и работать так, как ожидается.

...