我正在尝试在我的网站上显示一个用户数据表 - 所以我正在使用循环来迭代用户并显示他们的信息。之前,它非常简单,但我想添加条件来处理他们可能没有城市,州或任何一个进入的情况。当我只输入一个案例时,它可以正常工作。当我有两者时,它工作正常。用户位置在模型中定义为城市和州的联接。所以不要担心。但是当我没有时,它不显示我想要的'---'。我在这里缺少什么?
<tr>
<% @user.each do |user| %>
<td><%= link_to user.username, public_profile_path(user.username) %><br/></td>
<% if user.state != nil and user.city != nil %>
<td><%= user.location %></td>
<% elsif user.state != nil and user.city == nil %>
<td><%= user.state %></td>
<% elsif user.state == nil and user.city != nil %>
<td><%= user.city %></td>
<% else %>
<td>---</td>
<% end %>
<% if user.phone != nil %>
<td><%= user.phone %></td>
<% else %>
<td>-</td>
<% end %>
<td><%= mail_to user.email.to_s, "Email this User", :cc => "michaelomchenry@gmail.com",
:subject => "Contact from Overflow Member" %></td>
</tr>
<% end %>
答案 0 :(得分:3)
我会添加一个名为location_display的辅助方法,或者那些处理应该显示的所有逻辑的行。
def location_display(user)
return user.location if user.state && user.city
return user.state if user.state && user.city.blank?
return user.city if user.city && user.state.blank?
"----"
end
然后,在您的视图中,只需将所有这些行替换为:
<td><%= location_display(user) %></td>