我需要一些帮助来弄清楚我正在处理的一个模块。如前所述,我使用Rails3,jquery token.input和koala进行facebook的集成。我试图完成的是从facebook获取用户的所有朋友,并使用jquery tokeninput选择特定的朋友。用户单击submit后,好友的in将保存在数据库中。ryan在他精彩的屏幕造型中向我们展示了如何搜索数据库,但我遇到的情况是在用户界面中通过数组(二维)进行搜索和更新。
控制器代码:
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]%') 发布于 2011-10-27 01:16:17
您可以使用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"}]}https://stackoverflow.com/questions/7171091
复制相似问题