我目前正在执行我的控制器操作:
render json: order.to_json(:include => [items: {include: [products: {include: [:inventory]}]}])
现在,我将其移到像这样的更丰富的对象上
class OrderResponse
attr_accessor :success, :errors, :order, :users
def initialize(success, errors)
@success = success
@errors = errors
end
end
现在的问题是,它不能呈现订单模型的所有内部数据。 json现在只有命令属性,因为我现在不叫:includes。
response = OrderResponse.new(true, [])
response.order = order
response.user = user
render json: response
如何覆盖现在如何将订单转换为json?
答案 0 :(得分:1)
就像您可以使用ERB模板语言(或其他语言)创建.html模板一样,您可以使用jbuilder DSL来呈现复杂的json响应。
OrdersController:
@response = OrderResponse.new(true, [])
render :response, formats: [:json]
views / orders / response.json.jbuilder
json.call @response, :id
json.user do
json.extract! @response.user, :id, :created_at # ...
end
json.order do
json.extract! @response.order, :id, :created_at # ...
end