我正試圖學習考拉寶石來鏈接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