2013-04-08 17 views
0

在PHP中我可以這樣做:PHP可能性,超薄模板語言Ruby的

<div class="foo <?php 
    if($a) echo "bar"; ?> 
"><?php if ($b) echo "</div>"; ?> 

這是非常方便。我可以在任何地方,任何引號之間,任何html符號之間打破字符串,無論我在哪裏。

我需要在Ruby-html中實現相同的功能。我正試圖將一個PHP項目移植到Ruby。我使用Slim模板語言。我試過,但它不工作,斯利姆拋出錯誤:

<div class="foo 
    - if (x == 1) 
    = bar 
    "></div> 

現在搭配修身我知道只有一條路:

- if (a == true) 
    <div class="foo"></div> 
- else 
    <div class="foo bar"></div> 

首先,重複。其次,我的HTML-PHP部分代碼非常複雜。它有兩個循環(for循環和foreach循環),並且我使用多個這樣的嵌入來根據條件添加div的屬性。而且無法想象如何用Slim來實現它。它拋出一個錯誤,即使這一點,我不能打破長HTML字符串:

- if(i != 5) 
    <div class="foo bar" 
    id="item_#{i}" 
    style="background-color:red;" 
    data-im="baz"> 
    </div> 
- else 

不修身允許引號或元素屬性之間打破有條件if小號字符串?怎麼做?

回答

2

如果你使用Rails,你可以自由地促進ActionView::Helpers這樣:

= content_tag :li, class: (a == true ? "foo bar" : "foo") do 
    inside div 

Elsewise你可以自由地創造一些輔助的方法來彌補這一邏輯,你

儘管如此,它是認爲不恰當的做法在視圖中包含很多邏輯。考慮使用一些Presenter pattern

編輯。

展望一些slim docs發現你能夠實現你的目標,這樣

div.foo class="#{'bar' if a == true}" 
    | Text inside div