ruby on rails - Eliminando nodos raíz secundarios en RABL
ruby-on-rails (4)
En las últimas versiones de Rabl, debe establecer esta configuración si desea que include_root_json
sea false
en todos los niveles.
Rabl.configure do |config|
config.include_json_root = false
config.include_child_root = false
end
Estoy intentando generar una estructura de datos bastante simple utilizando RABL, pero no puedo averiguar cómo eliminar correctamente los nodos raíz secundarios. Aquí están mis dos plantillas.
Primero, la plantilla de índice de colección.
collection @groups, :object_root => false
attributes :id, :name
child :files do
extends ''groups/_file''
end
Y a continuación, el archivo de plantilla parcial.
object @file
attributes :id
Esas dos plantillas terminan produciendo el siguiente JSON:
[
{
"id":"4f57bf67f85544e620000001",
"name":"Some Group",
"files":[
{
"file":{
"id":"4f5aa3fef855441009000007"
}
}
]
}
]
Quiero encontrar una manera de eliminar la clave de "archivo" raíz dentro de la colección de archivos. Algo como:
[
{
"id":"4f57bf67f85544e620000001",
"name":"Some Group",
"files":[
{
"id":"4f5aa3fef855441009000007"
}
]
}
]
Esta es la forma habitual de eliminar el json raíz (en lugar de especificar object_root: false)
config / initializers / rabl_config.rb
Rabl.configure do |config|
config.include_json_root = false
end
¿Mover eso a allí (y reiniciar los rieles), arreglarlo?
Intenta reemplazar:
child :files do
extends ''groups/_file''
end
con:
node :files do |group|
group.files.map do |file|
partial ''groups/_file'', object: file, root: false
end
end
solo ponlo ahí, en caso de que quieras aplicarlo para un niño específico:
child :files, :object_root => false do
extends ''groups/_file''
end