2012-02-21 24 views
6

que tengo esta plantilla Rabl:RABL: objetos JSON sin raíz clave

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

Lo que me da esta respuesta JSON:

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

Pero yo quiero que se vea como esto:

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

¿Por qué Rabl envuelve cada elemento en la matriz con un objeto adicional llamado comment. De esta manera, cuando accedo a la colección en javascript que tengo que escribir:

var comment = image.comments[0].comment 

en lugar de:

var comment = image.comments[0] 

Sé que si incluyo :comments en la lista de atributos para el objeto @photo funciona el como yo quiero, pero cuando quiero otro nivel de asociaciones anidadas para cada objeto comment, no hay una manera de manejar eso además de usar child, pero eso me da la respuesta JSON que no quiero.

Tal vez estoy simplemente malinterpretando todo - ¿alguien puede explicar o ayudar? ¡Gracias!

Respuesta

7

¡Lo tengo!

Crear un nuevo archivo en config/initializers/rabl_config.rb:

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

end 
+2

que tenía este mismo problema y encontré que tenía que añadir "config.include_child_root = false" además de include_json_root = false –