FacebookをRubyonRailsアプリケーションにリンクするコアラの宝石を学ぼうとしています。私はそれのコツをつかみ始めています、しかし私はいくつかの深刻な精神的なブロックにぶつかっています!
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
配列内の文字列を返そうとすると、配列を返すだけです。ここからどこへ行くのかよくわかりません。