2012-11-24 30 views
0

當它提供ruby表達式時,如if語句,我不知道如何正確縮進。Haml ruby​​表達式縮進

%ul 
    %li foo 
    - if true 
    %li bar 

上面的代碼工作,但兩人%li不對齊,這不是優雅對我來說,成爲他們在同一水平(我的意思都是UL%的兒童)

有一個更優雅的方式來做到這一點?

+0

您應該考慮在[code review stackexchange](http://codereview.stackexchange.com/) – rudolph9

+1

上發佈這些問題,這也讓我感到不安,但我認爲下面的erb建議更糟。我發現,當他們開始失控時,我會將偏小的東西放在偏旁。 – froderik

+0

@froderik我同意你的意見,在我的建議和最初的代碼之間,我可能會選擇原始代碼,但我正在盡力回答這個問題。在給定視圖文件中格式化代碼的可用選項中,有更好的選擇嗎? – rudolph9

回答

1

如果你關心格式化以提高可讀性,最好的方法是用erb:過濾器逃避哈姆。

%ul 
    erb: 
    <li>foo</li> 
    <% if true %><li>bar</li><% end %> 

不幸的是在這樣的情況下凹陷還挺使代碼的可讀性,但要注意裸露的觀點是不是意味着大量邏輯。儘可能多的,你應該使用你的控制器和幫助器從視圖中提取邏輯。

1

好了 - 所以這裏是我的代碼時會發生什麼情況是 '有點' 比這個更復雜:

list.haml

%ul 
    = render :partial => 'list_item', :locals => { value => 'foo', cond => true } 
    = render :partial => 'list_item', :locals => { value => 'bar', cond => false } 

_list_item.haml

- if cond 
    %li= value 

但在這樣一個微不足道的情況下,我可能不會這樣做。大多數情況下,最終會變得不那麼微不足道......用這種方法,您需要到另一個文件來查看實際發生的情況。 pro是乾的。

+1

美麗!我比我更喜歡它。 – rudolph9

+0

thx - 我分開 - 我不喜歡將它分散到多個文件中,但我不喜歡嵌入的erb – froderik