2016-02-20 28 views
1

所以我有這個在我看來軌else語句重複多次

<% @events.each do |event| %> 
     <% if event.eventcomplete %> 
    <% else %> 
    <tr> 
    <td colspan="7"> 
     <p> 
     No Events could be found. 
     </p> 
    </td> 
</tr> 
    <% end %> 

這是我的搜索結果頁面上,

但是什麼IM想如果沒有eventcomplete,只是顯示一個沒有活動發現,

目前我得到大約100個發現的事件,但是,他們都沒有完成。所以我讓我周圍100「沒有活動可以發現」

感謝所有幫助

山姆

回答

1

您的代碼缺少一個<% end %>標籤。

<% @events.each do |event| %> 
    <% if event.eventcomplete %> 
    [insert view code to show if event.eventcomplete is true] 
    <% else %> 
    <tr> 
     <td colspan="7"> 
     <p> 
      No Events could be found. 
     </p> 
     </td> 
    </tr> 
    <% end %> 
<% end %> 
+0

對不起,我錯過了everythiign其間的的if else節省一些步伐,獨桅帆船我會顯示他們嗎? –

+0

查看更新 - 看起來像你缺少一個<% end %>標籤 –

2

我不知道你的代碼是什麼樣的事,但聞起來我錯了兩個決定顯示哪些行以及是否要表明你在你看來eventcomplete過濾你的「沒有結果「消息。想必你以後想使用這個集合(如分頁)做其他的事情,所以我建議在控制器過濾收集:

# controller code 
@in_progress_events = @events.where(eventcomplete: false) 

一旦集合被它擊中的觀點,檢查之前正確進行過濾出這個答案上顯示的提示點:Rails: An elegant way to display a message when there are no elements in database

0

實際上代碼是做什麼它應該做的,

你的HTML座在你的每個塊定義,這就是爲什麼它被認爲是提出了100倍。

我只是輔助變量固定的,但它僅僅是一個解決辦法

你應該使用更多的靜態方法在你的模型,只是把它定義

請確保您的業務邏輯保持發生在您的機型:

脂肪模型,薄控制器/瀏覽次數

這應該工作

<% @there_is_no_eventcomplete = false %> 
<% @events.each do |event| %> 
    <% if event.eventcomplete %> 
     @there_is_no_eventcomplete = true 
    <% end %> 
<% end %> 
<% if @there_is_no_eventcomplete == false %> 
    <tr> 
    <td colspan="7"> 
     <p> 
     No Events could be found. 
     </p> 
    </td> 
    </tr> 
<% end %> 
0

您想在您的模型上使用一個範圍,然後您可以在控制器中調用該範圍。我不知道你是如何設置你的模型或如何確定是否已完成了一個事件,所以讓我們假設你有一個布爾屬性,完成你的模型:

event.rb

class Event 
    def self.completed 
    where(complete: false) 
    end 
end 

控制器

@events = Event.completed 

視圖

<% unless @events.nil? 
    <% @events.each do |event|%> 
    // your code 
    <% end %> 
<% else %> 
    // your code 
<% end %>