我正在使用 jsonapi 来渲染对象:
product = Product.find(1)
render json: ProductSerializer.new(product)
我的问题是,我应该如何序列化产品列表?
如果我这样做:
products = Product.all
render json: ProductSerializer.new(products)
它不起作用,我收到此错误(这是有道理的,因为我试图序列化一个数组,但它没有 id):
id 是 jsonapi 规范中的必填字段
如果我序列化每个产品并将其返回到数组中,如下所示:
response = []
products = Product.all
products.each do |product|
response << ProductSerializer.new(product)
end
每个对象都会有一个
included
对象,而不是仅将一个 included
附加到具有所有关系的响应中...
这就是
ProductSerializer
:
class ProjectSerializer
include JSONAPI::Serializer
set_type :product
attributes :name
end
渲染 json:序列化(产品)
def序列化(数据,序列化器= ProductSerializer) serializer.new(data).serialized_hash[:data].map { |hash|哈希[:属性]} 结束