Рабл и массив массива

Решения не нашел, поэтому решил спросить здесь. У меня есть этот массив (конструкция может быть изменена при необходимости):

[[{:time=>2014, :amount=>148.24018480434023}, {:time=>2015, :amount=>152.5625744766238}], [{:time=>2014, :amount=>151.06717076828187}, {:time=>2015, :amount=>158.43869963240266}]]

В шаблоне Rabl у меня есть:

collection @array, object_root: false

node :collection do |s|
  s 
end

И ответ:

[{"collection": [{"time": 2014,"amount": 148.24018480434023},{"time": 2015,"amount": 152.5625744766238}]},{"collection": [{"time": 2014,"amount": 151.06717076828187},{"time": 2015,"amount": 158.43869963240266}]}]

Однако я хотел бы избавиться от узлов «коллекции» и получить именно этот ответ:

[ [{ time: 2014, amount: 138.92 }, { time: 2015, amount: 142.98 }], [{ time: 2014, amount: 141.57 }, { time: 2015, amount: 148.48 }] ]

person Kamil Łęczycki    schedule 19.06.2013    source источник


Ответы (2)


Если хотите избавиться от рута попробуйте

#  config/initializers/rabl_init.rb
Rabl.configure do |config|
  config.include_json_root = false
  config.include_child_root = false
end

https://github.com/nesquena/rabl/issues/4

Аналогично: Удаление дочерних корневых узлов в RABL

person egghese    schedule 02.07.2013

Я знаю, что это старый вопрос, но ради потомков. Самый простой подход — удалить :collection при вызове узла. Итак, для вашего примера это будет так, как показано ниже

collection @array, object_root: false

node do |s|
  s 
end
person Mark Ellul    schedule 10.05.2014