0

私はレールが初めてで、このデータを反復処理する方法を理解するのに苦労しています。これは、etsy API を統合した gem からの出力です。ハッシュのセットの配列のように見えますか?

output=[#<Etsy::Listing:0x5551ba8 @result={"listing_id"=>182661496, "title"=>"Edible Butterflies in Coral", "quantity"=>1, "price"=>"12.50", "ending_tsz"=>1405362199, "shipping_template_id"=>nil, "MainImage"=>{"url_75x75"=>"https://img1.etsystatic.com/036/0/8545731/il_75x75.576542775_ibud.jpg"}}, @token="token", @secret="secret">, 
#<Etsy::Listing:0x5551bc0 @result={"listing_id"=>182671909, "title"=>"Marshmallow Sampler Pack", "quantity"=>3, "price"=>"9.50", "ending_tsz"=>1405362468, "shipping_template_id"=>1680751676, "MainImage"=>{"url_75x75"=>"https://img1.etsystatic.com/021/0/8545731/il_75x75.576544537_n2zo.jpg"}}, @token="token", @secret="secret">, 
#<Etsy::Listing:0x5551bf0 @result={"listing_id"=>182663346, "title"=>"Gourmet popcorn and seasoning kit", "quantity"=>15, "price"=>"26.95", "ending_tsz"=>1405363087, "shipping_template_id"=>nil, "MainImage"=>{"url_75x75"=>"https://img0.etsystatic.com/026/0/8545731/il_75x75.576428850_r1mv.jpg"}}, @token="token", @secret">, 
#<Etsy::Listing:0x5551c08 @result={"listing_id"=>189414412, "title"=>"Sailor Tote Bag", "quantity"=>45, "price"=>"50.00", "ending_tsz"=>1410586221, "shipping_template_id"=>1024284528, "MainImage"=>{"url_75x75"=>"https://img0.etsystatic.com/039/0/8545731/il_75x75.576443100_slse.jpg"}}, @token="token", @secret="secret">]

私が試したことは何もないようです。配列として扱うと、次のように機能します: output.length は正しく4を返します。しかし、output[0] は他のデータなしで<Etsy::Listing:0x5483418>を返します。実際に必要なのは、@result={} に含まれるものだけです。アイデア?ありがとう!

4

2 に答える 2

0

あなたが書いた:

ハッシュのセットの配列のように見えますか?

オブジェクトの配列です。各オブジェクトはEtsy::Listingインスタンスです。Rails コンソールでこれを実行できるはずです。

> listing = output.first
#=> <Etsy::Listing:0x5483418>
> listing.result
#=> {"listing_id"=>182661496, …}

リストごとに何かしたい場合は、次のようにします。

> output.each {|listing| puts listing.result.title }
Edible Butterflies in Coral
Marshmallow Sampler Pack
Gourmet popcorn and seasoning kit
Sailor Tote Bag
> 
于 2014-10-31T08:16:25.983 に答える
0

doc でこれを読み逃したようです:

listings = output.map do |listing| 
  { 
    "title"    => listing.title, 
    "quantity" => listing.quantity, 
    "price"    => listing.price
  }
end
于 2014-10-31T08:21:43.220 に答える