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 回答