2014-10-19 4 views
0

Я получаю список фотографий (альбомов) от пользователя flickr. Как я могу извлечь id из этого массива хэшей, а затем использовать flickr.photosets.getPhotos, чтобы отображать изображения в каждом альбоме? Я все еще изучаю Руби и чувствую себя очень застрявшим в этом. Я благодарен за любой толчок в правильном направлении.Ruby Flickr API и фотографии

Когда я пытаюсь добавить set.each do .. anything в блок @photosets - я получаю ошибку метода для каждого из них.

photos_controller.rb

require 'flickraw' 

class PhotosController < ApplicationController 

    def index 
    FlickRaw.api_key = ENV['FlickRaw_api_key'] 
    FlickRaw.shared_secret = ENV['FlickRaw_shared_secret'] 

    @photosets = flickr.photosets.getList(user_id: '[email protected]').each do |set| 
     set 
    end 
    end 
end 

фотографии/index.html.erb

<h1>Listing photosets</h1> 

<%= @photosets %> 

Выходной ток

Листинг photosest

{ 
    "id" =>"72157633435549025", 
    "primary" =>"8720558709", 
    "secret" =>"d6f79d3d3c", 
    "server" =>"7395", 
    "farm" =>8, 
    "photos" =>"8", 
    "videos" =>0, 
    "title" =>"Poetry Project", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"4", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1368044794", 
    "date_update" =>"1368044886" 
}, 
{ 
    "id" =>"72157633308505122", 
    "primary" =>"8674031898", 
    "secret" =>"8cd5722def", 
    "server" =>"8543", 
    "farm" =>9, 
    "photos" =>"22", 
    "videos" =>0, 
    "title" =>"Photo Midterm", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"2", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1366676884", 
    "date_update" =>"1366943480" 
} 

ответ

0

Я понял - вот код, который я использовал. Это позволяет вам извлекать информацию об альбомах отдельных лиц (например, «Фотосеты»), а затем для фотографий в каждом наборе фотографий.

Контроллер требуют '' flickraw

class PhotosController < ApplicationController 
    def index 
    FlickRaw.api_key = ENV['FlickRaw_api_key'] 
    FlickRaw.shared_secret = ENV['FlickRaw_shared_secret'] 

    @photosets = flickr.photosets.getList(user_id: '[email protected]').map do |set| 
     flickr.photosets.getPhotos(photoset_id: set['id']).photo.map do |photo| 
     FlickRaw.url_b(photo) 
     end 
    end 
    end 
end 

Вид

<% @photosets[0].each do |image| %> 
<%= image_tag image %> 
<% end %> 
1

Вы почти у цели. Если ваша цель состоит в выходных данных фотосеты и их соответствующих фотографий на вашем index.html.erb, вы можете попробовать что-то вроде:

@photosets = flickr.photosets.getList(user_id: '[email protected]').each do |set| 
    set["photos"] = flickr.photosets.getPhotos(photoset_id: set["id"]) 
end 

Это будет что-то вроде:

{ 
    "id" =>"72157633435549025", 
    "primary" =>"8720558709", 
    "secret" =>"d6f79d3d3c", 
    "server" =>"7395", 
    "farm" =>8, 
    "photos" =>"8", 
    "videos" =>0, 
    "title" =>"Poetry Project", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"4", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1368044794", 
    "date_update" =>"1368044886" 
    "photos" => [{"id" => "2484", 
       "secret"=>"123456", 
       "server"=>"1", 
       "title"=>"my photo", 
       "isprimary"=>"0"}, 
       {"id" => "2483", 
       "secret" => "123456", 
       "server" => "1", 
       "title" => "flickr rocks", 
       "isprimary" => "1"}] 
}, 
{ # etc... } 

Я не уверен, что вы имеете в виду по sets.each do .. anything не работает, поскольку в ваших кодах я не вижу sets.

+0

Это делает так много смысла для меня ... но я получаю эту ошибку неопределенный метод '[] = 'для # latazzajones

+0

Любая идея, какие части кодов запускают ее? Во время 'getList' или' getPhoto'? –

+0

Я прокомментировал все после установки ["photos"] и не было никакой ошибки. – latazzajones

Смежные вопросы