Рабл и массив массивов
Я не мог найти решение, поэтому я решил спросить здесь. У меня есть этот массив (конструкция может быть изменена при необходимости):
[[{: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 }] ]
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
Я знаю, что это старый вопрос, но ради потомков. Самый простой подход - удалить коллекцию: при вызове узла. Так что для вашего примера это будет как ниже
collection @array, object_root: false
node do |s|
s
end