tengo el siguiente controlador:Ruby on Rails - Render JSON
@moulding = Moulding.find(params[:id].split(","), :select => 'id, cost, width')
@mount = MaterialCost.find(1).cost_per_square_mm
@glass = MaterialCost.find(2).cost_per_square_mm
@backing_board = MaterialCost.find(3).cost_per_square_mm
@vat = AppOption.find(1, :select => 'value')
@wastage = AppOption.find(2, :select => 'value')
@markup = AppOption.find(3, :select => 'value')
respond_to do |format|
format.json { render :json => { :moulding => @moulding, :mount => @mount, :glass => @glass, :backing_board => @backing_board, :vat => @vat, :wastage => @wastage, :markup => @markup } }
end
La salida JSON es el siguiente:
{"moulding":[{"moulding":{"cost":"3.1","id":2,"width":45}},{"moulding":{"cost":"1.5","id":4,"width":30}},{"moulding":{"cost":"2.1","id":6,"width":50}}],"mount":"0.00000246494303242769","glass":"0.0000032426589803639","backing_board":"0.00000135110790848496","vat":{"app_option":{"value":"17.5"}},"wastage":{"app_option":{"value":"20"}},"markup":{"app_option":{"value":"3"}}}
Me gustaría que el JSON para estar en el siguiente formato:
{"mouldings":[{"2":{"cost":"3.1","width":45}},{"4":{"cost":"1.5","width":30}},{"6":{"cost":"2.1","width":50}}],"mount":"0.00000246494303242769","glass":"0.0000032426589803639","backing_board":"0.00000135110790848496","vat":{"app_option":{"value":"17.5"}},"wastage":{"app_option":{"value":"20"}},"markup":{"app_option":{"value":"3"}}}
La razón por la que quiero hacer esto es para poder extraer los datos de un particular moulding
por id
de la cadena JSON. ¿Cómo puedo reformatear el JSON renderizado?
@Berin Loritsch - El uso de '@ moulding.id' da un error' método indefinido 'id''. – freshest
¿Estás seguro de que tienes '@' en vez de ':'? Esperaría que ': moulding.id' arrojara ese error. –
@Berin Loritsch - Sí, estoy usando '@moulding.id => @ moulding' – freshest