22

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

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

products/show.json.jbuilder で何かをする

json.variations @product.variations

次のようにフォーマットできます:

{
   "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

しかし、これらの正しくフォーマットされたオブジェクトを子としてバリエーション属性に入れるソリューションをまだ見つけていません。誰かが前に似たようなことに出くわしましたか?

4

1 に答える 1

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

^^これでいけるはず

于 2014-02-06T11:21:46.107 に答える