2010-11-24 47 views
0

我正在返回一個包含10個不同Amazon aws_objects的數組。我想遍歷它們中的每一個並將它們保存到我的數據庫中,但有時Amazon API會返回空數組。例如,標題方法可能會成功,但medium_image方法可能會返回零,從而打破循環。我知道我需要在這裏使用一些條件函數,但我不確定如何以每次都有效的方式進行操作。 (如果我可以跳過空數組,然後繼續保存數據,這也會很好)。使用Ruby循環訪問Array時跳過空元素

items.each do |aws_object| 
    if aws_object.blank? == false 
    @amazonproduct = Amazonproduct.new 
    @amazonproduct.name = aws_object.item_attributes.title.to_s.gsub("&", "&") 
    @amazonproduct.asin = aws_object.asin.to_s 
    @amazonproduct.image_url = aws_object.medium_image.url.to_s 
    @amazonproduct.description = aws_object.item_attributes.feature.to_s 
    @amazonproduct.price = aws_object.item_attributes.list_price.formatted_price.to_s.gsub("$", "") 
    @amazonproduct.object_url = aws_object.item_links.item_link[0].url.to_s 
    @amazonproduct.save 
    end 
end 

我試過使用while,除非 - 遇到麻煩提出正確的組合。

謝謝你的幫助!

詹姆斯

回答

1

首先,跳過數組中的空項,你可以使用:

items.compact.each do |aws_object| 

緊湊的調用將返回數組刪除了所有零條目。如果你要測試的屬性,你可以做這樣的事情:

@amazonproduct.image_url = aws_object.medium_image.url.to_s unless aws_object.medium_image.nil? 
0

您應該檢查在循環兩個條件......一個是array.nilarray.empty

如果這些計算結果爲true ,轉移到下一條記錄...