0

友情.rb

belongs_to :user, :include => [:profile]
belongs_to :friend, :class_name => 'user'

user.rb

  #following code
  has_many :friendships
  has_many :friends, :through => :friendships

  #followers code
  has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
  has_many :inverse_friends, :through => :inverse_friendships, :source => :user

このコードを使用して、私が友達になった人と私を友達にした人を表示します

見る

   <h2>Friends</h2>
    <ul>
      <% for friendship in @user.friendships.includes(:user) %>
        <li>
          <%= friendship.user.username %>
          (<%= link_to "remove", friendship, :method => :delete %>)
        </li>
      <% end %>
    </ul>

    <p><%= link_to "Find Friends", users_path %></p>

    <h2>Friended by Users</h2>
    <ul>
      <% for user in @user.inverse_friends %>
        <li><%=h user.username %></li>
      <% end %>
    </ul>

最初のループ ブロックでは、常に自分のユーザー名が出力されます。2 番目のループ ブロックでは、「fxuser」と呼びましょう。私と友達になった人の正しいユーザー名を取得します...

最初のループで友達になった人の正しいユーザー名が表示されるようにするにはどうすればよいですか?

4

1 に答える 1

2

あなたの最初のループでは、私はfriendship.user自分自身を参照していると信じています。あなたが探しているfriendship.friendfriendshipまた、削除リンクの逆ではなく、を削除したいと思います。

 <% for friendship in @user.friendships.includes(:friend) %>
    <li>
      <%= friendship.friend.username %>
      (<%= link_to "remove", friendship, :method => :delete %>)
    </li>
 <% end %>

また、変更する必要があります

belongs_to :friend, :class_name => 'user'

belongs_to :friend, :class_name => 'User'
于 2012-09-21T12:36:22.387 に答える