【问题标题】:Inserting custom key:value pair in JSON structure with custom order using jbuilder使用 jbuilder 以自定义顺序在 JSON 结构中插入自定义键:值对
【发布时间】:2016-03-01 07:22:26
【问题描述】:

在控制器的显示方法中,我使用查询设置了@object

@object = WorkOrder.find(params[:id])  

现在,show.json.jbuilder 模板的代码如下:

json.extract! @object, :id, :note, :status, :created_at
json.store_name @object.store.display_name

而o/p是,

{
  "id": 31,
  "note": "work_order for store A",
  "status": "complete",
  "created_at": "2015-11-26T11:16:53.000Z",
  "store_name": "store name"
}

现在,如何在 'status' 和 'created_at' 之间插入 'store_name' 自定义键?

【问题讨论】:

  • 这样试试 => json.extract!对象, :id, :note, :status, json.store_name object.store.display_name json.extract!对象,:created_at
  • 如果我可能会问,为什么你需要在 json 中的订单?
  • @bo-oz 虽然顺序无所谓,但很想知道解决问题的方法。

标签: ruby-on-rails jbuilder ruby-2.1


【解决方案1】:

你也可以像这样让 Rails 发挥作用:

render :json => @object, :include => {:store => {:only => :display_name}}

【讨论】:

    【解决方案2】:

    如果您希望属性按特定顺序排列,那么您自己添加它们可能会更好。

    Jbuilder 文件:

    json.id @object.id
    json.note @object.note
    json.status @object.status
    json.display_name @object.store.display_name
    json.created_at @object.created_at
    

    输出

    {
      "id": 31,
      "note": "work_order for store A",
      "status": "complete",
      "display_name": "store name",
      "created_at": "2015-11-26T11:16:53.000Z"
    }
    

    我建议您嵌入关系。如果您想添加Store 的其他属性,它的可扩展性会更好。

    示例:

    Jbuilder 文件:

    json.id @object.id
    json.note @object.note
    json.status @object.status
    
    json.store do
      json.name @object.store.display_name
    end
    
    json.created_at @object.created_at
    

    输出

    {
      "id": 31,
      "note": "work_order for store A",
      "status": "complete",
      "store": {
        "name": "store name"
      },
      "created_at": "2015-11-26T11:16:53.000Z"
    }
    

    稍后您可以轻松地将属性添加到Store 哈希而不破坏接口。

    【讨论】:

      【解决方案3】:

      恐怕无法将 store_name 带到其他位置。你应该对你拥有的东西感到满意。

      【讨论】:

        猜你喜欢
        • 2016-01-10
        • 2014-08-09
        • 1970-01-01
        • 2017-09-03
        • 1970-01-01
        • 2020-04-15
        • 1970-01-01
        • 2014-01-09
        • 1970-01-01
        相关资源
        最近更新 更多