2010-03-13 90 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