Подтвердить что ты не робот

Встроенный тег в haml

В 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>

Хорошо, потому что абзац текста по-прежнему выглядит как параграф в разметке. В haml это выглядит как

%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?

4b9b3361

Ответ 1

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

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

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

.content
  :markdown
    Lorem ipsum *dolor* sit amet.

Ответ 2

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

%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, между запятой и запятой будет пробел.

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

В вашем haml;

%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. 

Ответ 5

Всё об отстуке:

%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.