我有一个Rails 5应用程序,并且拥有包含许多属性的Person模型,包括
id
name
我想从我找到的人员列表中渲染这两个属性。我试过这个
format.js {
render :json => @people.to_json(include: [:id, :name])
}
其中“@people”是Person对象的数组,但上面的结果是
undefined method `serializable_hash' for 16:Integer
错误。从Person模型中仅渲染两个字段的正确方法是什么?
答案 0 :(得分:1)
您应该使用only:
代替include:
format.js {
render :json => @people.to_json(only: [:id, :name])
}
虽然only
仅为您提供该模型中所需的属性,但include
意味着包含模型的其他关联! (关联为belong_to
或has_many
等)
无论如何,还有另一种方法可以在模型查询中使用select
获得相同的结果。
@poeple = Person.select(:id, :name).where(....)
然后返回to_json
- >您不需要排除任何属性,因为您只能获得所需的属性。
**第二种方法只有在其他情况下不需要其他属性才有效。例如,如果要返回模型的完整属性列表(如果不是json
)