模型属性的JBuilder动态键 [英] JBuilder dynamic keys for model attributes

查看:82
本文介绍了模型属性的JBuilder动态键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试构建一个JSON文件以通过变体代码访问产品的变体.理想情况下,我可以称其为variances.abcdefgh,其本质是要求定义如下结构:

I'm trying to build a JSON file to access a product's variation via a variation code. Ideally, I could call variations.abcdefgh essentially asking to define a structure like this:

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

在products/show.json.jbuilder中做某事,例如

Doing something in products/show.json.jbuilder like

json.variations @product.variations

给我这样的格式:

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

也许我的JavaScript会更好,但是我希望基于product_code可以更方便地访问一些内容.我最接近的是

maybe my JavaScript could be better, but I want something a little more accessible based on the product_code. The closest I've gotten has been

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

但是我还没有找到一种解决方案,可以将这些格式正确的对象作为子级放入variants属性中.有人碰过类似的东西吗?

but I've yet to find a solution that will put these correctly formatted objects as children into a variations attribute. Anyone run into something similar before?

推荐答案

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

^^这应该做到

这篇关于模型属性的JBuilder动态键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆