Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用户字段上的Rails视图条件if/elsif_Ruby On Rails_Erb - Fatal编程技术网

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逻辑,帮助者往往是我解决此类问题的目标