从Hashie获取随机结果和限制输出:: Mash循环Ruby on Rails

时间:2012-07-31 11:04:49

标签: ruby json api instagram

我使用Instagram API获取用户的照片Feed。输出看起来像这样:

 [#<Hashie::Mash attribution=nil caption=nil comments=#<Hashie::Mash count=0 data=[]> created_time="1330231732" filter="Sutro" id="1403234234201396589_3002382" images=#<Hashie::Mash low_resolution=#<Hashie::Mash height=306 url="http://distilleryimage5.s3.amazonaws.com/8fd08dfsdfsdf111e180d51231380fcd7e_6.jpg" width=306>

我可以愉快地循环并显示所有图像或使用它的特定图像:

  Instagram.user_recent_media(@client.user.id).each do |test|
    %img{:src=>"#{test.images.low_resolution.url}"}

如何获得随机结果并限制只显示一个图像?我尝试过使用limit(x),但是会抛出错误。我只是想随机显示一个图像,而不是整个流。

1 个答案:

答案 0 :(得分:1)

media = Instagram.user_recent_media(@client.user.id)
puts media.class

给出:

Array

知道它是一个数组,然后你可以使用sample方法轻松获得一个随机元素:

random = media.sample
puts "#{random.images.low_resolution.url}"

注意sample方法在Ruby 1.8.7中被命名为choice