rails 3, ruby, ввод токена jquery и коала

Мне нужна помощь в определении модуля, над которым я работаю. Как уже упоминалось, я использую rails 3, jquery token.input и koala для интеграции с facebook. Я пытаюсь заполучить всех друзей пользователя из facebook и использовать jquery tokeninput для выбора определенных друзей. После того, как пользователь нажимает кнопку «Отправить», идентификаторы друзей сохраняются в базе данных. То, что Райан показал нам в своем замечательном скринкасте, - это поиск в базе данных, но ситуация, с которой я сталкиваюсь, - это поиск в массиве (двумерном) и обновление в пользовательском интерфейсе.

Код контроллера:

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

person Aniruddha Sg    schedule 24.08.2011    source источник


Ответы (1)


Вы можете использовать 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"}]}
person hellvinz    schedule 26.10.2011