2013-12-11 77 views
2

我對可以在模板中間插入模板渲染感興趣嗎?例如:如何停止渲染頁面/部分

項目/ index.html.haml

%h2 Items 

-if @items.empty? 
    %h3 There are no items 
    /X statement/ 


[email protected] do |item| 
    /items rendering/ 

所以,如果沒有項目,將顯示消息和頁面渲染會被打斷,否則項目清單將被渲染。現在唯一的辦法就是拋出if-else語句。我試圖用到位X聲明回報,但好像它不就像我期望

回答

5

的方式來實現這一結果是完全通過使用if-else語句。

我不熟悉Haml的,但使用好「老」僱員再培訓局的邏輯是

<% if @items.empty? %> 
    There are no items 
<% else %> 
    <% @items.each do |item| %> 
    ... 
    <% end %>  
<% end %>  

您可以使用雙如果,如果你喜歡拆分的條件

<% if @items.empty? %> 
    There are no items 
<% end %>  

<% @items.each do |item| %> 
... 
<% end unless @items.empty? %>  
+0

有沒有什麼辦法可以避免if-else?像PHP中的die()函數一樣,只有die()在全局工作,而且我希望當前文件的作用範圍相同 – atomAltera

+2

爲什麼你想違背自然?即使假設可能存在某種破解,解決方案其實很簡單:您應該使用if-else流控制語句。 –

3

基本上,你不能這樣做。你可以做的是檢查是否@items是空的之前,你開始呈現物品索引:

- if @items.empty? 
    %h3 There are no items 
- else 
    %h2 Items 
    - @items.each do |item| 
    /items rendering/