0

私は自分のサイトにユーザーデータのテーブルを表示しようとしています-そのため、ユーザーを反復処理してユーザーの情報を表示するループを使用しています。以前は非常に単純でしたが、都市、州、またはいずれかが入力されていない可能性がある場合を処理する条件を追加したいと思いました。1つのケースしか入力していない場合は、正常に機能します。私が両方を持っているとき、それはうまくいきます。ユーザーの場所は、モデルで都市と州のJOINとして定義されます。だから心配しないでください。しかし、どちらも持っていない場合は、必要な「---」が表示されません。ここで何が欠けていますか?

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

1 に答える 1

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>
于 2013-03-26T20:23:22.307 に答える