2013-08-09 20 views
14

バリエーションコードを使用して製品のバリエーションにアクセスするためのJSONファイルを作成しようとしています。理想的には、私は基本的に、このような構造を定義することが求めvariations.abcdefgh呼び出すことができます。モデルの属性のJBuilder動的キー

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

製品に何かをして/

json.variations @product.variations 

ようshow.json.jbuilderは私のような書式を提供します:

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

多分私のJavaScriptは良いかもしれませんが、私はproduct_codeに基づいて少しアクセスしやすくなりたいです。私が得ている最も近い

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

てきましたが、私はバリエーション属性に子としてこれらの正しい形式のオブジェクトを配置します解決策を見つけるしたことはありません。誰かが前に似たようなことをしていますか?

答えて

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

^^これはそれを優秀な

+0

を行う必要があります。非常に良い解決策! –