Ruby on rails 用户字段上的Rails视图条件if/elsif
我试图在我的站点上显示一个用户数据表,所以我使用了一个循环来迭代用户并显示他们的信息。以前,它非常简单,但我想添加一些条件,以处理可能没有城市、州或任何一个输入的情况。当我只输入了一个案例时,它工作正常。当我两者都有的时候,效果很好。用户位置在模型中定义为城市和州的连接。所以别担心。但是当我两者都没有时,它就不会显示我想要的'--'。我错过了什么Ruby on rails 用户字段上的Rails视图条件if/elsif,ruby-on-rails,erb,Ruby On Rails,Erb,我试图在我的站点上显示一个用户数据表,所以我使用了一个循环来迭代用户并显示他们的信息。以前,它非常简单,但我想添加一些条件,以处理可能没有城市、州或任何一个输入的情况。当我只输入了一个案例时,它工作正常。当我两者都有的时候,效果很好。用户位置在模型中定义为城市和州的连接。所以别担心。但是当我两者都没有时,它就不会显示我想要的'--'。我错过了什么 <tr> <% @user.each do |user| %> <td><%= link_to
<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 %>
---
-
"michaelomchenry@gmail.com",
:subject=>“来自溢出成员的联系人”%>
我会添加一个助手方法,称为location\u 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>
我会添加一个助手方法,称为location\u 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>
您能分享一下从页面源代码中获得输出的信息吗?它是什么都没有,还是有不同的意外行为?没有,如果其中一个有值(城市或州),它会输出到视图,如果两者都有,它会使用我在模型中插入的东西连接它们,但是如果两者都没有,它将不会输出任何东西,即使我要求它,如上所示。def location[city.to_.camelcase,state.to_.upcase].reject(&:blank?).join(“,”)end您能分享一下从页面源中得到的输出吗?它是什么都没有,还是有不同的意外行为?没有,如果其中一个有值(城市或州),它会输出到视图,如果两者都有,它会使用我在模型中插入的东西连接它们,但是如果两者都没有,它将不会输出任何东西,即使我要求它,如上所示。def location[city.to_.camelcase,state.to_.upcase].reject(&:blank?).join(“,”)endI当前在项目模型中使用此选项来控制它。这会取代它吗?def location[city.to_.camelcase,state.to_.upcase].reject(&:blank?).join(“,”)end这个主意真的很棒。我要试一试。我发布的代码感觉非常糟糕。我讨厌那样的大条件。我认为把它放在一个视图中是不理想的。是的,如果你不在其他地方使用它,你可以直接把位置逻辑移动到那个助手中。它实际上更多的是一个视图关注点,而不是一个模型关注点,因此在助手中更具意义。我尽可能避免在视图中使用if逻辑,帮助者往往是我处理此类问题的目标。我目前在项目模型中使用它来控制它。这会取代它吗?def location[city.to_.camelcase,state.to_.upcase].reject(&:blank?).join(“,”)end这个主意真的很棒。我要试一试。我发布的代码感觉非常糟糕。我讨厌那样的大条件。我认为把它放在一个视图中是不理想的。是的,如果你不在其他地方使用它,你可以直接把位置逻辑移动到那个助手中。它实际上更多的是一个视图关注点,而不是一个模型关注点,因此在助手中更具意义。我尽可能避免在我的视图中使用if逻辑,帮助者往往是我解决此类问题的目标