2011-08-24 4 views
0

내가 작업중인 모듈을 알아 내는데 도움이 필요합니다. 언급했듯이 나는 페이스 북 통합을 위해 레일 3, jquery token.input 및 코알라를 사용하고 있습니다. 내가 달성하려고하는 것은 페이스 북에서 사용자의 모든 친구들을 붙잡고 특정 친구를 선택하기 위해 jquery tokeninput을 사용하는 것입니다. 사용자가 제출을 클릭하면 친구의 ID가 데이터베이스에 저장됩니다. ryan이 멋진 스크린 캐스트에서 우리에게 보여 주었던 것은 데이터베이스를 검색하는 방법 이었지만 내가 만나는 상황은 배열 (2 차원)을 통한 검색과 사용자 인터페이스에서의 업데이트입니다.레일 3, 루비, 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"}] 

그러나 나는 친구들 중 일부를 원한다면 모든 친구들을 가져 오는 것을 피하도록 제안 할 것입니다. 여자 이름. 다음 조건을 사용하여 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"}]}