Генерация JSON с помощью RABL с использованием коллекции в качестве дочернего узла корневого объекта

Я пытаюсь сгенерировать JSON с помощью RABL, мое index.rabl представление выглядит так:

collection @products => :products
  attributes :id, :name, :price, :category_id

node(:total) {@products.count}

Это генерирует JSON со следующей структурой:

{"products":[{"id":1,"name":"product name","price":0.00,"category_id":1,"total":30}, 
             {"id":2,"name":"product2 name","price":0.00,"category_id":1,"total":30},...]}

Однако я бы хотел, чтобы структура сгенерированного JSON выглядела так:

{  "products":[{"id":1,"name":"product name","price":0.00,"category_id":1}, 
               {"id":2,"name":"product2 name","price":0.00,"category_id":1},...],  
   "total":30
}

Это означает, что я хотел бы получить "total":30 из массива "products" и поместить его в корневой объект сгенерированного JSON. Какие изменения мне нужно внести в файл представления, чтобы сгенерировать требуемый JSON? У меня очень мало опыта работы с RABL, и помощь будет высоко оценена.


person Optimus Pette    schedule 28.02.2014    source источник


Ответы (1)


В вашем index.json.rabl вы можете сделать это:

object false
child @events do
  attributes :id, :message
end
node(:count) { @events.size }

Результат:

{
    "count": 50,
    "events": [
        {
            "id": 124,
            "message": "Hola"
        },
        {
            "id": 123,
            "message": "Chau"
        },
        {
            "id": 122,
            "message": "Yeah baby!"
        }
    ]
}

Я проверил это на своем проекте. Вы можете изменить события с продуктами...

person Leantraxxx    schedule 28.02.2014