我正试图学习考拉宝石来链接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
每当我试图将一个阵列内返回字符串,他们只是返回数组。不确定该从哪里出发。
我已经按照Phrogz建议(感谢队友) - 和一些测试后,我已经想通了,为什么我出错。当我测试一个方法的类时 - 它返回一个Array类。当我给这个方法一个变量名时 - 该变量名返回NilClass。 – Samwise