2012-02-21 3 views
6

У меня есть этот шаблон RABL: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, который я не хочу.

Возможно, я просто недопонимаю все это - может кто-нибудь объяснить или помочь? Благодаря!

ответ

7

Получил это!

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

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

end 
+2

я имел такую ​​же проблему и обнаружили, что мне нужно, чтобы добавить «config.include_child_root = ложь» в дополнение к include_json_root = ложь –

Смежные вопросы