встроенный тег в хамле - PullRequest
       2

встроенный тег в хамле

36 голосов
/ 24 сентября 2010

В html вы можете сделать что-то вроде этого

<p>
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
  aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
  <em>Etiam nec nisi lorem</em>, ac venenatis ipsum. In sollicitudin, 
  lectus eget varius tincidunt, felis sapien porta eros, non 
  pellentesque dui quam vitae tellus. 
</p>

Это хорошо, потому что абзац текста все еще выглядит как абзац в разметке. В хамле это выглядит так

%p
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
    aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
    %em Etiam nec nisi lorem
    , ac venenatis ipsum. In sollicitudin, 
    lectus eget varius tincidunt, felis sapien porta eros, non 
    pellentesque dui quam vitae tellus. 

Есть ли способ полностью встроить тег в haml?

Ответы [ 5 ]

63 голосов
/ 24 сентября 2010

Haml отлично подходит для структурной разметки, но на самом деле он не предназначен для встроенной разметки.Читайте: Haml Отстой для Содержимого .Просто поместите ваши встроенные теги в HTML:

.content
  %p
    Lorem ipsum <em>dolor</em> sit amet.

Или используйте фильтр :

.content
  :markdown
    Lorem ipsum *dolor* sit amet.
20 голосов
/ 03 апреля 2013

Я знаю, что это старый. Но я решил опубликовать это на случай, если кто-нибудь приземлится здесь. Вы также можете делать такие вещи в хамле (а может, больше того, что искал ОП?).

%p Here is some text I want to #{content_tag(:em, "emphasize!")}, and here the word #{content_tag(:strong, "BOLD")} is in bold. and #{link_to("click here", "url")} for a link.

Полезно в тех ситуациях, когда выполнение нескольких строк добавляет пробелы, которые вам не нужны И.Е. Когда у вас есть ссылка в конце предложения, и вы не хотите, чтобы этот тупой пробел между ссылкой и точкой. (или, как в примере с OP, между и запятой будет пробел.

Только не увлекайся, как в примере:)

9 голосов
/ 11 апреля 2012

Вы можете встроить HTML в любой HAML, выполнив

%p!= "Lorem ipsum <em>dolor</em> sit amet"

Оператор! = Означает, что все, что вернет правая сторона, будет выведено.

3 голосов
/ 30 ноября 2013

Как гибрид этих хороших ответов от других, я думаю, что вы можете определить метод Helper в вашем application_helper.rb для некоторых встроенных разметок, которые вы часто используете.Вам не нужно смешивать HTML с HAML, и вам не нужно много печатать.

В вашем помощнике;

def em(text)
  content_tag(:em, text)
end

#def em(text)
#  "<em>#{text}</em>".html_safe
#end

В вашем письме;

%p
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget 
    aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 
    #{em 'Etiam nec nisi lorem'}, ac venenatis ipsum. In sollicitudin, 
    lectus eget varius tincidunt, felis sapien porta eros, non 
    pellentesque dui quam vitae tellus. 
1 голос
/ 08 июня 2015

Все дело в отступе:

%p
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget aliquet odio. Fusce id quam eu augue sollicitudin imperdiet eu ac eros. 

  %em 
    Etiam nec nisi lorem, ac venenatis ipsum. In sollicitudin, lectus eget varius tincidunt, felis sapien porta eros, non pellentesque dui quam vitae tellus. 
...