create a new hash and pass the array values โโinto it.
respond_with({:LayerOne => @layer1.as_json(:only => [:name, :percentage]), :LayerTwo => @layer2.as_json(:only => [:name, :off_target_by])})
I got this json:
{ "LayerOne": [ { "name": "layer1", "percentage": "10.11" }, { "name": "layer 1 bis", "percentage": "1212.0" } ], "LayerTwo": [ { "name": "layer 2", "off_target_by": 2 }, { "name": "layer 2 bis", "off_target_by": 9 } ] }
hope this helps :)
EDIT 2:
You can create an array serializer to pass in your variables:
class LayerArraySerializer < ActiveModel::ArraySerializer self.root = false end
and in your opinion:
respond_with({:LayerOne => @layer1 , :LayerTwo => @layer2}, :serializer => LayerArraySerializer)
json print:
[ [ "LayerOne", [ { "percentage": "10.11", "name": "layer1" }, { "percentage": "1212.0", "name": "layer 1 bis" } ] ], [ "LayerTwo", [ { "off_target_by": 2, "name": "layer 2" }, { "off_target_by": 9, "name": "layer 2 bis" } ] ] ]
source share