haml中的内联标记

时间:2010-09-24 03:36:23

标签: 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中完全内联一个标签?

5 个答案:

答案 0 :(得分:62)

Haml擅长结构化标记,但它并不是真正用于内联标记。阅读:Haml Sucks for Content。只需将您的内联标记设为HTML:

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

或者使用filter

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

答案 1 :(得分:20)

我知道这是旧的。但想到我发布这个以防万一有人降落在这里。你也可以用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.

对于在多行上执行此操作会添加您不想要的空格的情况非常有用 I.E.当你在一个句子的末尾有一个链接,并且不希望链接和句点之间的那个愚蠢的空格。 (或者在OP的例子中,在逗号和逗号之间会有一个空格。

请不要像我在示例中那样被带走:)

答案 2 :(得分:9)

您可以在任何HAML中内联HTML

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

!=运算符意味着无论右侧返回它都将被输出。

答案 3 :(得分:3)

作为其他人的好回答的混合体,我认为您可以在application_helper.rb中为您经常使用的某些内联标记定义一个Helper方法。您不需要将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. 

答案 4 :(得分:1)

这都是关于缩进的:

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