Несколько элементов Haml на одной линии - PullRequest
11 голосов
/ 13 марта 2010

Я хочу иметь возможность иметь два элемента Haml на одной строке. Например:

%h1 %a{:href => '/'} Professio.

Это не работает. Как бы заставить что-то подобное работать без сбоев?

Ответы [ 4 ]

17 голосов
/ 20 апреля 2011

Поздний ответ, но я сам решил ту же проблему и знал, что у HAML есть способ сделать это как часть языка. См. Раздел Удаление пробелов в справочнике HAML .

Вы могли бы сделать это так:

%h1<
  %a{ :href => '/' } Professio.

Или вот так:

%h1
  %a{ :href => '/' }> Professio.
5 голосов
/ 18 февраля 2015

Хэмл не может этого сделать. Тонкий может:

h1: a( href='/' ) Professio.

совпадает с:

h1
  a( href="/ ) Professio

Вы можете написать как можно более глубокое дерево:

ul.nav
  li.active: a( href="/home" ):    strong Home
  li:        a( href="/contact" ): span   Contact

Jade также имеет аналогичный синтаксис и поддерживает эту функцию, но он был разработан для среды Node.js.

5 голосов
/ 13 марта 2010

К сожалению, вы не можете поместить два элемента haml в одну строку.

Вы можете добиться чего-то подобного, используя встроенные элементы html:

%h1 <a href='/'>Lorem ipsum</a>

Почему вам не нравится этот формат?

%h1 
  %a{:href => '/'} Professio.

Другой вариант - написать специальный вспомогательный метод (который генерирует ссылку html). Например, link_to в Rails:

%h1= link_to 'Professio', root_url
3 голосов
/ 18 марта 2010

Если вы хотите сохранить HTML в одной строке, вы можете попробовать что-то вроде этого:

irb> print Haml::Engine.new("%h1<\n  %a{:href => '/'} Profession.").render()
<h1><b href='/'>Profession.</a></h1>

Найдено здесь: Удаление пробелов HAML

[Редактировать: я знаю, что это говорит выше ...]

...