Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby Flickr API和Photoset_Ruby On Rails_Ruby_Arrays_Hash_Flickr - Fatal编程技术网

Ruby on rails Ruby Flickr API和Photoset

Ruby on rails Ruby Flickr API和Photoset,ruby-on-rails,ruby,arrays,hash,flickr,Ruby On Rails,Ruby,Arrays,Hash,Flickr,我正在从flickr检索个人的照片集(相册)列表。如何从这个散列数组中提取id,然后使用它列出每个相册中的图像?我仍在学习Ruby,对此感到非常困惑。我很感激任何朝着正确方向的努力 当我尝试添加set.each do。。对@photosets块执行任何操作-我得到的“每个”都没有方法错误 photos\u controller.rb require 'flickraw' class PhotosController < ApplicationController def index

我正在从flickr检索个人的照片集(相册)列表。如何从这个散列数组中提取id,然后使用它列出每个相册中的图像?我仍在学习Ruby,对此感到非常困惑。我很感激任何朝着正确方向的努力

当我尝试添加
set.each do。。对
@photosets
块执行任何操作-我得到的“每个”都没有方法错误

photos\u 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: '67921947@N02').each do |set|
       set
    end
  end
end

你快到了。如果您想在
index.html.erb
上输出照片集及其各自照片的数据,可以尝试以下操作:

@photosets = flickr.photosets.getList(user_id: '67921947@N02').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... }

我不确定你所说的
集合是什么意思。。任何
都不起作用,因为我在你的代码中看不到设置

我想出来了-这是我使用的代码。这允许您提取有关个人相册(也称为“photoset”)的信息,然后获取每个photoset中的照片

控制器 需要“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: '67921947@N02').map do |set|
      flickr.photosets.getPhotos(photoset_id: set['id']).photo.map do |photo|
        FlickRaw.url_b(photo)
      end
    end
  end
end
class photocontroller
查看

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


这对我来说很有意义。。。但是我得到了这个错误未定义的方法“[]=”,你知道代码的哪个部分触发了它吗?在
getList
getPhoto
期间,我在set[“photos”]之后注释掉了所有内容,没有出现错误。我需要做什么特别的事情来解析JSON吗?我使用的是Rails 4.1,不需要对JSON做任何事情。你能在
设置[“照片]
后发布你所有的代码吗?
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: '67921947@N02').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 %>