2012-02-21 24 views
6

ho questo modello Rabl:Rabl: oggetti JSON senza radice chiave

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

che mi dà questa risposta JSON:

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

ma voglio farlo sembrare come questo:

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

Perché rabl avvolge ogni elemento dell'array con un oggetto aggiuntivo chiamato comment. In questo modo, quando accedo la collezione in javascript devo scrivere:

var comment = image.comments[0].comment 

invece di:

var comment = image.comments[0] 

So che se mi includo :comments nella lista attributi per l'oggetto @photo funziona il modo che voglio, ma quando voglio un altro livello di associazioni nidificate per ogni oggetto comment, non c'è un modo per gestirlo oltre all'uso di child, ma questo mi dà la risposta JSON che non desidero.

Forse sto solo fraintendendo tutto - qualcuno può spiegare o aiutare? Grazie!

risposta

7

Trovato!

Creare un nuovo file in config/initializers/rabl_config.rb:

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

end 
+2

Ho avuto questo stesso problema e ha scoperto che avevo bisogno di aggiungere "config.include_child_root = false" in aggiunta a include_json_root = false –

Problemi correlati