2009-11-16 63 views
17

我想要的是什麼在「如果」和什麼在「其他」包括#主塊。有條件的哈姆 - 如果其他嵌套

- if @transparency 
    #content-inner{:style => "background: url(../../../images/illustrations/" + @transparency + ") no-repeat 88% 50%"} 
- else 
    #content-inner 
    #main-block 

目前發生的是,如果@transparency定義,#main-block沒有嵌套在#content-inner

+0

看起來像相同的職位 - http://stackoverflow.com/questions/1451794/haml-if-else-error - 雖然他們似乎得到一個答案,除了重複 – 2009-11-16 13:40:47

回答

22

您可以使用三元運算符有條件地應用樣式屬性:

#content-inner{ :style => @transparency ? "background: url(../../../images/illustrations/" + @transparency + ") no-repeat 88% 50%" : '' } 
    #main-block 

對於更復雜的結構,例如操縱多個散列屬性,這是最好的或者使用一個輔助方法,或者移動共同的內容,以部分。

+0

大獎。謝謝塔德曼,這打開了幾扇門。 – 2009-11-16 16:15:42

+1

剛剛看到你的答案,並想補充說,如果你必須在該條件內評估Ruby,那麼你可以像我這樣做:'.request {:class =>(request.user_id == current_user.id)? 「突出顯示」:無}。在我如何渲染這個(長篇故事)的情況下,我無法創建一個實例變量,因此我在括號中評估Ruby,看看這個請求對象是否屬於'current_user',如果它確實如此,我將'highlight'類添加到div。只是想,如果別人還沒有弄清楚,我會分享這個珍聞。 – 2011-08-31 15:58:55