рельсы 3, ruby, ввод токена jquery и коала - PullRequest
0 голосов
/ 24 августа 2011

Мне нужна помощь в определении модуля, над которым я работаю. Как уже упоминалось, я использую рельсы 3, jquery token.input и коала для интеграции с 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]%') 

1 Ответ

0 голосов
/ 26 октября 2011

Вы можете использовать , выбрать , чтобы вернуть только нужных вам друзей

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