0

Facebook グラフ API を使用して、ユーザーの友達リストを取得しようとしています。しかし、私のアプリは最初のユーザーの友達リストしかリストできません。たとえば、ユーザー 6 のフレンド リスト 6 を開くと、フレンド リスト 1 の内容が表示されます。理由を知っている人はいますか?あなたの時間と助けに感謝します!!

user.rb

 class User < ActiveRecord::Base     
   has_many :friends

        def self.from_omniauth(auth) 
          where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| 
          user.provider = auth.provider 
          user.uid = auth.uid 
          user.name = auth.info.name 
          user.email = auth.info.email 
          user.oauth_token = auth.credentials.token 
          user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
          user.save! 
          end   
        end 

        def friendslist 
        facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
          self.friends.where(:name => hash['name'], :uid => hash['id']).first_or_create 
          end   
        end

         private    def facebook    
       @facebook ||= Koala::Facebook::API.new(oauth_token) 
         end
end

user.html.erb

**<table>
  <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Friends</th>
  </tr>
    <% @user.each do |user| %>
  <tr>
    <td><%= user.name %></td>
      <td><%= user.email %></td>
      <td> <%= link_to "View Friends List", friend_path(user) %></td>
  </tr>
   <% end %>  
</table>**

友人.html.erb

**<table>
  <tr>
    <th>Friends</th>
  </tr>
   <% @friend.each do |friend| %> 
  <tr>
    <td>
        <%= friend.name %>
    </td>
  </tr>
   <% end %>  
</table>**

フレンドコントローラー

class FriendController < ApplicationController

    def index
    @friend = Friend.all
      respond_to do |format|
     format.html
     format.json { render json: @friend }
    end
  end
end
4

1 に答える 1

0

あなたは単に変更する必要があるかもしれません...

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.where(:name => hash['name'], :uid => hash['id']).first_or_create 
      end   
  end

to (Rails <=3 の場合)

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.find_or_create_by_name_and_uid(hash['name'],hash['id'])
      end   
  end

to (Rails 4 の場合)

 def friendslist 
    facebook {|fb| fb.get_connection("me", "friends")}.each do |hash| 
      self.friends.find_or_create_by(:name => hash['name'], :uid => hash['id'])
      end   
  end
于 2014-04-09T22:29:26.467 に答える