2010-03-13 70 views

回答

5

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

可以实现使用内嵌HTML元素类似的东西:

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

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

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

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

%h1= link_to 'Professio', root_url 
+0

我想在同一行上,因为我想要输出HTML在同一行。 我只会做多行,谢谢。 – 2010-03-13 14:34:21

+1

检查Garvin回答下面,他迟到了,但似乎是这个问题的正确答案。 – fotanus 2012-06-20 21:50:04

2

如果你正在寻找保存在同一行的HTML,你可以尝试这样的事:

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

这里找到:HAML whitespace removal

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

+0

我发现我的答案后,我意识到你的答案基本相同。我没有意识到它起初是一样的,因为代码示例有点模糊。 – 2011-04-20 17:16:45

16

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

你可以这样来做:

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

或者这样说:

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

Haml的不能做到这一点。 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环境设计的。

+0

感谢您指出Slim,它似乎是HAML的一个不错的选择! – 2015-06-29 15:00:24

相关问题