RABL: объекты JSON без корневого ключа

У меня есть этот шаблон рабла:

object @photo
attributes :id
child :comments do
  attributes :id, :body
end

Что дает мне этот ответ JSON:

{
  photo: {
    id: 1,
    comments: [
      { 
        comment: {
          id: 1,
          body: 'some comment'
        }
      },
      { 
        comment: {
          id: 2,
          body: 'another comment'
        }
      }
    ]
  }
}

Но я хочу, чтобы это выглядело так:

{
  id: 1,
  comments: [
    { 
      id: 1,
      body: 'some comment'
    },
    { 
      id: 2,
      body: 'another comment'
    }
  ]
}

Почему rabl оборачивает каждый элемент массива дополнительным объектом с именем comment. Таким образом, когда я получаю доступ к коллекции в javascript, мне нужно написать:

var comment = image.comments[0].comment

вместо:

var comment = image.comments[0]

Я знаю, что если я включу :comments в список атрибутов для объекта @photo, он будет работать так, как я хочу, но когда я хочу другой уровень вложенных ассоциаций для каждого объекта comment, нет другого способа справиться с этим, кроме использования child, но это дает мне ответ JSON, который мне не нужен.

Может быть, я просто неправильно понимаю все это - может кто-нибудь объяснить или помочь? Спасибо!


person Calvin    schedule 21.02.2012    source источник


Ответы (1)


Понятно!

Создайте новый файл в config/initializers/rabl_config.rb:

Rabl.configure do |config|
  config.include_json_root = false
  config.include_child_root = false

end
person Calvin    schedule 02.03.2012
comment
У меня была такая же проблема, и я обнаружил, что мне нужно добавить config.include_child_root = false в дополнение к include_json_root = false - person Will Hitchcock; 21.10.2012