Почему атрибуты не установлены в этом самозакрывающемся haml_tag?

Я собираю хамл вывод, используя вспомогательный метод haml_tag, Однако конкретный элемент, который я хочу захватить, является <meta/> тег, и поэтому я пытаюсь выяснить, как получить самозакрывающийся тег, а также включить атрибуты.

Это работает (почти)

haml_tag 'meta', '', name: :description, content: 'this is the description'

выходы:

<meta content='this is the description' name='description'></meta>

Однако я хотел бы вывести:

<meta content='this is the description' name='description' />

Это само закрывается, но не печатает атрибуты...

Если вы передаете флаг :/ тогда должна быть возможность самозакрыть тег, однако в этом случае атрибуты не будут распечатаны:

haml_tag 'meta', nil, :/, name: :description, content: 'this is the description'

выходы:

<meta />

Как я могу получить лучшее из обоих миров?

1 ответ

Решение

Просто опустите второй аргумент, если вы хотите пустой тег:

haml_tag 'meta', name: :description, content: 'this is the description'

производит:

<meta content='this is the description' name='description' />

Обратите внимание, что с meta является одним из пустых элементов по умолчанию, вам не нужно :/ аргумент, хотя вы можете добавить его, если хотите быть явным:

haml_tag 'meta', :/, name: :description, content: 'this is the description'

производит тот же вывод, что и выше.

Здесь есть ошибка в Haml 4.0.5, так как haml_tag не уважает format вариант. В формате HTML вывод должен быть:

<meta content='this is the description' name='description'>

Это исправлено в 4.1.0.beta.1.

Другие вопросы по тегам