2011-08-24 26 views
0

我需要一些幫助來弄清楚我正在處理的模塊。如前所述,我使用rails 3,jQuery的token.input和考拉爲facebook集成。 我想要完成的是從Facebook獲取用戶的所有朋友,並使用jQuery的tokeninput來選擇某些朋友。用戶點擊提交後,朋友的ID保存在數據庫中。瑞恩在他精彩的屏幕演示中向我們展示瞭如何搜索數據庫,但我遇到的情況是通過數組(二維)搜索並在用戶界面中更新。rails 3,ruby,jquery令牌輸入和考拉

控制器代碼:

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]%') 

回答

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"}] 

但是我建議避免抓取所有的朋友,如果你只想要一些EM。您可以使用條件執行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"}]}