Удаление дочерних корневых узлов в RABL - PullRequest
23 голосов
/ 12 марта 2012

Я пытаюсь отобразить довольно простую структуру данных с использованием 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 ]

47 голосов
/ 06 июля 2012

В последних версиях Rabl вы должны установить эту конфигурацию, если хотите, чтобы include_root_json было false на всех уровнях.

Rabl.configure do |config|
  config.include_json_root = false
  config.include_child_root = false
end
12 голосов
/ 14 марта 2012

Попробуйте заменить:

    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
2 голосов
/ 13 марта 2012

Это обычный способ удаления корневого json (вместо указания object_root: false)

config / initializers / rabl_config.rb

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

Перемещает ли это туда (иперезапуск рельсов), это исправить?

0 голосов
/ 22 июня 2014

просто выкладываю это на тот случай, если вы хотите применить его для конкретного ребенка:

child :files, :object_root => false do
  extends 'groups/_file'
end
...