Удаление дочерних корневых узлов в RABL
Я пытаюсь отобразить довольно простую структуру данных с использованием RABL, но я не могу понять, как правильно удалить дочерние корневые узлы. Вот мои два шаблона.
Во-первых, шаблон индекса коллекции.
collection @groups, :object_root => false
attributes :id, :name
child :files do
extends 'groups/_file'
end
И далее, файл частичного шаблона.
object @file
attributes :id
Эти два шаблона в конечном итоге создают следующий JSON:
[
{
"id":"4f57bf67f85544e620000001",
"name":"Some Group",
"files":[
{
"file":{
"id":"4f5aa3fef855441009000007"
}
}
]
}
]
Я хочу найти способ удалить корневой "файл" ключ внутри коллекции файлов. Что-то вроде:
[
{
"id":"4f57bf67f85544e620000001",
"name":"Some Group",
"files":[
{
"id":"4f5aa3fef855441009000007"
}
]
}
]
4 ответа
В последних версиях Rabl вы должны установить эту конфигурацию, если хотите include_root_json
быть false
на всех уровнях.
Rabl.configure do |config|
config.include_json_root = false
config.include_child_root = false
end
Попробуйте заменить:
child :files do
extends 'groups/_file'
end
с:
node :files do |group|
group.files.map do |file|
partial 'groups/_file', object: file, root: false
end
end
Это обычный способ удаления корневого json (вместо указания object_root: false)
конфиг / Инициализаторы /rabl_config.rb
Rabl.configure do |config|
config.include_json_root = false
end
Перемещает ли это туда (и перезапускает рельсы), исправляет ли это?
Просто поместите его там, на случай, если вы хотите применить его для конкретного ребенка:
child :files, :object_root => false do
extends 'groups/_file'
end