ruby-on-rails ruby rabl

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