我正在尝试学习 koala gem 以将 Facebook 与我的 Ruby on Rails 应用程序链接起来。我开始掌握它的窍门,但我遇到了一些严重的心理障碍!
def friends
facebook.fql_query("SELECT uid,username, is_app_user, name, pic_square FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1");
rescue Koala::Facebook::APIError => e
logger.info e.to_s
nil
end
所以,首先,我使用 FQL 来搜索用户的朋友。它返回用户的详细信息哈希,这些用户是 的朋友current_user
、登录到应用程序的用户,并且也与我的应用程序连接。
def friends_realname
names = friends.select {|f| f["is_app_user"] }.map {|f| f["name"]}
names.each { |name| puts name}
end
我正在选择上面的“用户的朋友也使用我的应用程序”的名称 - 并将它们映射到一个数组中。这将返回一个数组["friend1's name", "friend2's name"]
::
def friends_avatars
@avatars = friends.select {|f| f["is_app_user"] }.map {|f| f["pic_square"]}
end
我正在尝试做同样的事情,但返回相同用户的个人资料图片的 URL。它返回一个数组:
["http://www.example.com/example.jpg", "http://www.example2.com/example2.jpg"]
我想格式化返回数组中的信息。所以,对于真实姓名,我不想返回实际的数组,而是返回一个姓名列表。而且,显然对于图像,而不是返回图像 url 数组,我实际上想将这些图像“放入”视图中。
我在想我需要遍历每个数组,然后使用该each
方法对数组中的每个字符串执行某些操作,例如 puts img_tag
?
这样的事情可能吗?:
def friends_avatars
@avatars = friends.select {|f| f["is_app_user"] }.map {|f| f["pic_square"]}
@avatars.each { |avatar| puts image_tag "#{avatar}}"}
end
刚刚意识到这image_tag
是一个辅助方法,所以我不能在那里使用它。
我也在视图文件中试过这个:
<% for url in @avatars do %>
<%= puts "#{url}" %>
<% end %>
返回:
undefined method `each' for nil:NilClass
每当我尝试返回数组中的字符串时,它们只会返回一个数组。不太确定从这里去哪里。