2017-05-29 53 views
1

我在尝试渲染json中的多个嵌套对象时遇到了一些麻烦。Ruby on Rails 5.0.2 - 多个嵌套Json渲染

这里是我的脚本

def getFullSale 
     sale = Sale.find(params[:id]) 
     render json: sale, include: [:discount_sale, :offer_sale, :mixed_payment, :product_sale => {:include => {:product_history => {include: :product}}}, :refunds => {include: :refund_products}] 
end 

这工作,直到:product_sale,但是任何事情之后被忽略。

我需要的是包括:product_sale和:退款与嵌套属性。

谢谢!

回答

1

我已经成功地使其工作!

积分在Here

的解决方案是替代在包括所述阵列,并使其像一个对象。

def getFullSale 
    sale = Sale.find(params[:id]) 
    render json: sale, include: {discount_sale: {}, offer_sale: {}, mixed_payment: {}, :product_sale => {:include => {:product_history => {include: :product}}}, :refunds => {include: :refund_products}} 
end 

我不知道为什么发生这种情况,但现在正在工作! 实际上,将=>更改为:并不是一个坏主意。

def getFullSale 
    sale = Sale.find(params[:id]) 
    render json: sale, include: {discount_sale: {}, offer_sale: {}, mixed_payment: {}, product_sale: {include: {product_history: {include: :product}}}, refunds: {include: :refund_products}} 
end 
0

也许这是一个愚蠢的观察,但你尝试改变你的=>:

json: sale, include: [:discount_sale, :offer_sale, :mixed_payment, :product_sale : {:include : {:product_history : {include: :product}}}, :refunds : {include: :refund_products}] 
+0

与 试过渲染JSON:销售点,包括:[:discount_sale,:offer_sale,:mixed_pa​​yment,product_sale:{包括:{product_history:{包括:产品}}},退款:{包括:refund_products }] 但它是相同的响应=( –