2016-10-04 63 views
1

我試圖用Ruby Slim做內聯if紅寶石纖細內聯如果

下面給出我的例子...

- if @droppable 
    .panel data-draggable="true" 
    span More content here 
- else 
    .panel 
    span More content here 

在這兩種情況下,唯一的區別是頂級.panel元素的data-draggable屬性的存在。該.panel的內容是相同的,所以我想實現類似如下:

.panel (@droppable ? data-draggable="true") 
    span More content here 

是否有修身實現這一目標的方法嗎?

+1

第一個例子是正確的。你可能有@droppable的問題。嘗試在頁面中打印並檢查其值。 「 –

+0

」不起作用「是不合適的錯誤報告。請提供確切的錯誤消息和堆棧跟蹤。 – mudasobwa

+0

對不起,我的「不起作用」,我的意思是「span hello」只有在@droppable不正確時纔可見。我不知道如何顯示這兩種情況下的跨度問候。 – Mobidi

回答

0

使用dynamic tags

ruby: 
    def panel! 
    {tag: 'panel'}.tap do |tag| 
     tag[:"data-draggable"] = true if @droppable 
    end 
    end 

*panel! 
    span hello 
+0

明確要使用這個,非常感謝! – Mobidi

+1

稍微矯枉過正,實現一個簡單的可選屬性 – meagar

+0

是的,但「給男人一條魚,你喂他一天;教一個男人去釣魚,你一輩子喂他。「 – mudasobwa

1

沒有必要的if這裏,和三元運算符需要三個操作數,而不是兩個。

兩個苗條和HAML被設計成省略與零/假值的屬性,故意讓你使用&&操作者把一個truthy/falsy值屬性的存在與特定的值,或它的缺席:

在斯利姆:

.panel data-draggable=(@droppable && "true") 
    span Hello 

在HAML:

.panel{data: {draggable: @droppable && "true"}} 
    %span Hello 

在這兩種情況下,如果@droppable是真值,將會添加data-draggable="true",否則該屬性將被忽略。

+0

這絕對應該是被接受的答案。動態標籤過度殺傷。 – jeffdill2