如果用户字段为/ elsif,则Rails查看条件

时间:2013-03-26 20:14:09

标签: ruby-on-rails erb

我正在尝试在我的网站上显示一个用户数据表 - 所以我正在使用循环来迭代用户并显示他们的信息。之前,它非常简单,但我想添加条件来处理他们可能没有城市,州或任何一个进入的情况。当我只输入一个案例时,它可以正常工作。当我有两者时,它工作正常。用户位置在模型中定义为城市和州的联接。所以不要担心。但是当我没有时,它不显示我想要的'---'。我在这里缺少什么?

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

1 个答案:

答案 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>