尝试使用带有gon gem的jbuilder将对象及其子对象传递给javascript,其中object为lender
且它有许多子节点inventories
。遵循gon gem here的指示,但我坚持认为这是jbuilder方面的一个问题,而不是gon ......你会明白为什么。
获取贷方的当前代码:
#/ test.json.builder
json.lenders @lenders, :email, :latitude, :longitude
控制器代码中的测试操作
@lenders = Signups.all
gon.jbuilder
#/ test.html.erb
<script>
console.log(gon.lenders)
</script>
这样可以正常工作,并产生以下输出:
然而,当我尝试使用标准的jbuilder代码按照Ryan Bates的节目notes来获取孩子inventories
时,就像这样:
#/ test.json.builder
json.lenders @lenders, :email, :latitude, :longitude
json.inventories @lenders.inventories, :id, :itemlist_id, :description
我收到错误:undefined method
库存'##
我明白了我收到错误的原因,因为根据上面的输出,@lenders
的结果是lenders
的数组,而不是贷方对象本身,但是接下来是怎么回事我得到了清单吗?我希望的目标是输出如上所示,但对于每个对象,有一个inventories
字段,它产生一个单独的inventory
个对象的数组,每个属性都包含id
,itemlist_id
和description
。
我尝试过的事情产生了同样的错误:
一个每个Ryan Bates生孩子的其他变体
json.comments @article.comments do |json, comment|
json.partial! comment
end
#in partial
json.(comment, :id, :name, :content)
TWO 包括控制器代码中的库存
控制器代码中的测试操作
@lenders = Signups.all.includes(:inventories)
gon.jbuilder
这不是一个问题,gon是在gemfile中的jbuilder之后安装的,我将它包含在视图标题中。
答案 0 :(得分:1)
好的,这很有效:
<强>#/ test.json.builder 强>
json.array!(@lenders) do |json, lender|
json.(lender, :id, :email, :latitude, :longitude)
json.inventories lender.inventories do |json, inventory|
json.(inventory, :id, :itemlist_id, :description)
end
end
中提取
答案 1 :(得分:0)
嵌套has many
关系的简单方法。
json.array! @votations do |votation|
json.id votation.id
json.description votation.description
json.status votation.status
json.name votation.name
json.options do
json.array! votation.options, :id, :name, :votation_id
end
end