2012-08-06 226 views
2

在我看來,我正在測試以查看是否存在某些記錄。如果他們這樣做,我遍歷它們並顯示每一個。但是,如果這些記錄不存在,我想要顯示一條消息。這裏是我的觀點代碼:忽略其他語句

 <% if current_user.lineups %> 
     <% for lineup in current_user.lineups do %> 
      <li><%= link_to "#{lineup.course.cl} #{lineup.course.cn}", index_path %></li> 
     <% end %> 
     <% else %> 
     <li><%= link_to "You have no courses", index_path %></li> 
     <% end %> 

現在,迭代工作很好,當記錄存在。每當我創建正確的記錄時,這段代碼都會非常好地工作,併爲迭代的每條記錄創建一個鏈接。但是,如果沒有記錄存在,則不顯示任何內容。 'else'語句完全被忽略。我試圖修改'如果'的臺,但無濟於事。我想:

<% unless current_user.lineups.nil? %> 

除了:

<% if !(current_user.lineups.nil?) %> 

我在我的智慧在這裏結束。任何和所有的輸入將不勝感激。

+1

'else'被忽略的原因是'lineups'是一個空數組,而空數組是* thruthy *。換句話說,它永遠不會到達'else',因爲'if []'評估爲'true'。以下任一答案都可以解決您的問題。 – Mischa 2012-08-06 09:32:13

回答

2

試試這個在您的if語句

<% if current_user.lineups.blank? %> 
    <li><%= link_to "You have no courses", index_path %></li> 
<% else %> 
    <% for lineup in current_user.lineups do %> 
     <li><%= link_to "#{lineup.course.cl} #{lineup.course.cn}", index_path %></li> 
    <% end %> 
<% end %> 

它會檢查陣容數組爲空或零兩種情況。

+0

賓果。 i.imgur.com/lWPdJ.png – flyingarmadillo 2012-08-06 09:49:21

5

空數組不爲零,嘗試使用any?empty?

<% if current_user.lineups.any? %> 
    ... 
<% else %> 
    <li><%= link_to "You have no courses", index_path %></li> 
<% end %> 
2

你可以嘗試

if current_user.lineups.present? # true if any records exist i.e not nil and empty 
    # do if records exist 
else 
    # do if no records exist 
end 

禮物?是不是(!)的空白?

根據您需要的代碼位置,您可以使用blank?present?。 如果你使用blank?去@abhas回答