根据RABL documentation under "Child nodes",以下是可能的:
object @user
child :posts do |user|
attribute :title unless user.suspended?
end
这意味着块产生的user
变量是父对象@user
。
但是,当我尝试以下操作时:
collection @listings
child :address do |listing|
attribute :number_and_street unless listing.address_hidden?
end
我得到NoMethodError
:
undefined method `address_hidden?' for #<Address:0x007fb83d6eaf80>
意味着该块正在产生子地址对象而不是父{H}对象,如文档所暗示的那样。
我能看到的唯一方法是@listing
,这会导致数据库查询过多,所以我想避免这种情况。
我做错了吗?有没有办法解决这个问题?
答案 0 :(得分:0)
使用集合时,子块不会产生单个对象。 我要做的是将它分成两个文件。
index.json.rabl
collection @listing
extends "app/view/listings/base"
base.json.rabl
object @listing
child :address do |listing|
attribute :number_and_street unless listing.address_hidden?
end
编辑: 我刚注意到你正在使用rabl-rails宝石。我的解决方案适用于'rabl',我不太确定这个宝石:)