循环并仅显示存在的属性

时间:2014-03-06 03:21:52

标签: ruby-on-rails ruby-on-rails-4

我试图只显示索引页面上的属性。到目前为止,这是我的代码,它确实有效:

<% @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 %>

我的问题是

我是否有更简洁的方法(即不是为每个属性指定if)?

由于

1 个答案:

答案 0 :(得分: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 %>