2013-08-09 9 views
14

Ich versuche eine JSON-Datei zu erstellen, um über einen Variationscode auf eine Produktvariation zuzugreifen. Im Idealfall könnte ich nennen variations.abcdefgh im Wesentlichen eine Struktur wie folgt zu definieren, zu fragen:JBuilder dynamische Schlüssel für Modellattribute

{ 
    "variations":{ 
     "abcdefgh":{ 
     "available":true, 
     "price":"12.00" 
     }, 
     "ijklmnop":{ 
     "available":false, 
     "price":"25.00" 
     } 
    } 
} 

etwas in Produkte Doing/show.json.jbuilder wie

json.variations @product.variations 

gibt mir als solche Formatierung:

{ 
    "variations":[ 
     { 
     "available":true, 
     "price":"12.00", 
     "product_code":"abcdefgh" 
     }, 
     { 
     "available":true, 
     "price":"25.00", 
     "product_code":"ijklmnop" 
     } 
    ] 
} 

vielleicht könnte mein JavaScript besser sein, aber ich möchte etwas zugänglicher auf der Grundlage des Product_code. Die nächstgelegene ich bekommen habe hat

gewesen
@product.variations.each do |variation| 
    json.set! variation.product_code, variation 
end 

aber ich habe noch eine Lösung zu finden, die diese korrekt formatierten Objekte als Kinder in ein Variation Attribut gesetzt werden. Ist schon mal jemand auf etwas Ähnliches gestoßen?

Antwort

30
json.set! :variations do 
    @variations.each do |variation| 
    json.set! variation.product_code do 
     json.(variation, :available, :price) 
    end 
    end 
end 

^^ sollte dies tun es

+0

Excellent. Sehr gute Lösung! –

Verwandte Themen