0

私が取り組んでいるモジュールを理解するのに助けが必要です。前述のように、Facebook の統合には Rails 3、jquery token.input、および koala を使用しています。私が達成しようとしているのは、Facebook からユーザーのすべての友達を取得し、jquery tokeninput を使用して特定の友達を選択することです。ユーザーが送信をクリックすると、友人の ID がデータベースに保存されます。ryan が素晴らしいスクリーン キャストで示したのは、データベースを検索する方法ですが、私が遭遇している状況は、配列 (2 次元) を検索し、ユーザー インターフェイスで更新することです。

コントローラーコード:

def index 
  @graph = Koala::Facebook::GraphAPI.new(access_token)
  @friends = @graph.get_connections("me","friends")
  # now the @friends contains all the friends of the user, how do i get something
  # like to work Friends.where("%params[:q]%") on @friends

  respond_to do |format| 
    format.html
    format.json {:render :json => @friends} 
  end 
end 

配列を検索する方法今、私ができることがある

@friends.include?('%params[:q]%') 
4

1 に答える 1

0

selectを使用して、必要な友達だけを返すことができます

pry(main)> @friends
=> [{"name"=>"Foo bar", "id"=>"1"},
 {"name"=>"Bar Foo", "id"=>"2"},
 {"name"=>"Mark Zuckerberg", "id"=>"4"}]
pry(main)> params[:q]
=> ["1", "2"]
pry(main)> @friends.select{|friend| params[:q].include? friend['id']}                                                                                                              
=> [{"name"=>"Foo bar", "id"=>"1"}, {"name"=>"Bar Foo", "id"=>"2"}]

ただし、一部の友達だけが必要な場合は、すべての友達をフェッチしないことをお勧めします。条件付きで fql クエリを実行できます。

pry(main)> graph.fql_multiquery(query1: "select uid2 from friend where uid1 = me() and uid2 IN (#{params[:q].join(',')})", query2: 'select uid , name from user where uid in (select uid2 from #query1)')
=> {"query1"=>[{"uid2"=>"1"}, {"uid2"=>"2"}],
 "query2"=>
  [{"uid"=>1, "name"=>"Foo bar"},
   {"uid"=>2, "name"=>"Bar Foo"}]}
于 2011-10-26T17:16:17.080 に答える