同一行上的多个Haml元素

时间:2010-03-13 03:31:32

标签: haml

我希望能够在同一行上有两个Haml元素。例如:

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

这不起作用。如果没有borking,我怎么能得到这样的东西呢?

4 个答案:

答案 0 :(得分:17)

迟到的回答,但我自己只是解决了同样的问题,并且知道HAML有办法将这个作为语言的一部分。请参阅White Space Removal section of the HAML reference

你可以这样做:

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

或者这样:

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

答案 1 :(得分:5)

不幸的是,你不能在同一行上放两个haml元素。

您可以通过使用内联html元素来实现类似的功能:

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

你为什么不喜欢这种格式?

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

另一个选择是编写特殊的'helper'方法(生成一个html链接)。例如,Rails中的link_to:

%h1= link_to 'Professio', root_url

答案 2 :(得分:5)

哈姆不能这样做。 Slim可以:

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环境设计的。

答案 3 :(得分:3)

如果您想在同一行保留HTML,可以尝试这样的事情:

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

在此处找到:HAML whitespace removal

[编辑:我知道上面说的是b href ...]