2012-09-12 61 views
1

我正在從數組對象中打印一個列表,當它完成整個數組中的所有項目時,它會在HTML中打印出單詞「true」。HAML for循環在HTML渲染中打印單詞「true」

的代碼看起來是這樣的:

%ul 
    = for i in users 
    %li 
     = i.username 

此打印:

username1 
username2 
username3 
true 

看起來像這樣在HTML輸出:

<ul> 
    <li>username1</li> 
    <li>username2</li> 
    <li>username3</li> 
    true 
</ul> 

這是爲什麼true越來越印刷我該如何擺脫它?

回答

3

您的問題是您正在使用=作爲循環,導致輸出表達式的結果。當你想運行Ruby代碼,但沒有發出到輸出值,使用-代替:

%ul 
    - for i in users 
    %li 
     = i.username 

這可以更簡單地寫爲:

%ul 
    - for i in users 
    %li= i.username 

證明:

C:\>haml 
- users = %w[user1 user2 user3] 
%ul 
    - for name in users 
    %li= name 
^Z 
<ul> 
    <li>user1</li> 
    <li>user2</li> 
    <li>user3</li> 
</ul> 

順便說一句,我個人發現在Ruby中這種用法for不合時宜。相反,我個人推薦:

%ul 
    - users.each do |user| 
    %li= user.username 
+1

這應該是「首先,其次是**和**最後......」。真的不要使用'for',因爲它只是在內部使用'each' – Gareth

+0

你真棒。謝謝你這麼快解決我的問題:-) – Lorenz

+0

@Gareth謝謝你的英語批評。編輯。 :) – Phrogz