2014-03-06 81 views
0

我想只顯示我的索引頁上存在的屬性。這裏是我的代碼,到目前爲止,它的工作:循環,只顯示存在的屬性

<% @contacts.each do |contact| %> 
<strong>Name: <%= contact.name %></strong> 

<% if contact.phone %> 
    <p>Phone number: <%= contact.phone !="nil" %></p> 
<% end %> 
<% if contact.category !="nil" %> 
    <p>Category: <%= contact.category %></p> 
<% end %> 
<% if contact.area !="nil" %> 
    <p>Area: <%= contact.area %></p> 
<% end %> 
<% if contact.website !="nil" %> 
    <p>Website: <%= contact.website %></p> 
<% end %> 
<% if contact.email%> 
    <p>Email: <%= contact.email !="nil" %></p> 
<% end %> 
<% end %> 

我的問題是

有沒有更合適的方法爲我做到這一點(即不是如果每個屬性指定)?

感謝

回答

2
<% @contacts.each do |contact| %> 
    <strong>Name: <%= contact.name %></strong> 
    <%["phone", "category", "area", "website", "email"].each do |attr| %> 
    <% unless contact.send(attr).blank?%> 
     <p> 
     <%= attr.capitalize%> 
     </p> 
     <%= contact.send(attr.to_sym)%> 
    <% end %> 
    <% end %> 
<% end %> 
+0

,看起來不錯,謝謝。它似乎需要我說屬性!=「nil」,但是當您執行attr.to_sym時不起作用。是否一個空字符串不被識別爲不存在的屬性? – tessad

+1

我修改了一下.'send'與字符串一起工作。因此''to_sym'不需要'contact.send(attr)'和'contact.phone'相同。 – usha