模型属性的 JBuilder 动态键

Posted

技术标签:

【中文标题】模型属性的 JBuilder 动态键【英文标题】:JBuilder dynamic keys for model attributes 【发布时间】:2013-08-11 19:58:13 【问题描述】:

我正在尝试构建一个 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

但我还没有找到将这些正确格式化的对象作为子对象放入变体属性的解决方案。有人遇到过类似的事情吗?

【问题讨论】:

【参考方案1】:
json.set! :variations do
  @variations.each do |variation|
    json.set! variation.product_code do
      json.(variation, :available, :price)
    end
  end
end

^^ 这个应该可以的

【讨论】:

以上是关于模型属性的 JBuilder 动态键的主要内容,如果未能解决你的问题,请参考以下文章

在 JSON JBuilder 中渲染 html 部分

.netcore类库找不到main函数

根据同一模型中的另一个外键动态限制 Django 模型中外键的​​选择

django - 模型 unicode() 显示外键对象属性

MVC 模型外键导航属性

动态分配模型属性类型