Bu yüzden Amazon ürün reklamı API'sini kullanıyorum. Aramaların çoğunluğunun sonuçlarını araştırıp görüntüledim, ancak API çağrısı sonuçlarının bazı alanlarda sıfır değerine sahip olması durumunda çöküyor gibi görünüyor.API çağrısı = undefined method nil için: NilClass
undefined method `[]' for nil:NilClass
Aşağıda geçerli:
Ben üçlü operatörünü kullanarak bunun üstesinden gelmek için çalıştık, ancak bu hala, aşağıdaki hata mesajında veri bileşenleri sonuçlarını eksik API çağrısı çalışmak görünmüyor benim denetleyicisi alakalı kodu:
Orjinal Denemesi: Kullanımda
@hashed_products['ItemSearchResponse']['Items']['Item'].each do |item|
product = OpenStruct.new
product.Title = item['ItemAttributes']['Title']
product.image = item['MediumImage']['URL']
product.ASIN = item['ASIN']
product.URL = item['DetailPageURL']
product.Feature = item['ItemAttributes']['Feature']
product.Price = item['OfferSummary']['LowestNewPrice']['FormattedPrice']
@products << product
end
Üçlü Operatör:
@hashed_products['ItemSearchResponse']['Items']['Item'].each do |item|
product = OpenStruct.new
product.Title = item['ItemAttributes']['Title'] ? item['ItemAttributes']['Title'] : nil
product.image = item['MediumImage']['URL'] ? item['MediumImage']['URL'] : nil
product.ASIN = item['ASIN'] ? item['ASIN'] : nil
product.URL = item['DetailPageURL'] ? item['DetailPageURL'] : nil
product.Feature = item['ItemAttributes']['Feature'] ? item['ItemAttributes']['Feature'] : nil
product.Price = item['OfferSummary']['LowestNewPrice']['FormattedPrice'] ? item['OfferSummary']['LowestNewPrice']['FormattedPrice'] : nil
if product.Title || product.image || product.ASIN || product.URL || product.Feature || product.Price === nil
@products << product
end
end
Merhaba @Dharam, Üçlü operatörün aslında en iyi yaklaşım olup olmadığından emin değilim. Çözümünüzü denedim, ekledim. Ancak, bazı ölçütlerin NIL olduğu XML veri kümeleri üzerinde çöküyor. Aklında başka yaklaşımlar var mı? –
Başarısız olduğunu görmek için stacktrace'i sağlayın. – Dharam
Hata iletisi, ürünün product.image üzerinde başarısız olduğunu gösteriyor. Dolayısıyla, tüm öğelerin görüntülere veya orta boyutlu görüntülere sahip olmadığını varsayalım. –