我正在使用此处找到的GEM:https://rubygems.org/gems/active_model_serializers
我已经使用rails g创建了序列化程序,将它添加到我返回json的控制器中但它仍然返回所有内容而不是已定义的属性 - 任何想法?
module Api
module V1
class ProductDetailsController < ApplicationController
def show
@prod = ProductPrice.joins(:product, :retailer).select("*")
render json: @prod, serializer: ProductDetailSerializer
end
end
end
end
class ProductDetailSerializer < ActiveModel::Serializer
attributes :id
end
感谢。
答案 0 :(得分:0)
您的查询都是错误的 - 我猜测,因为您正在定义show
方法,所以您要查找的内容是这样的:
module Api
module V1
class ProductDetailsController < ApplicationController
def show
@prod = ProductPrice.joins(:product, :retailer).find(params[:id])
render json: @prod, serializer: ProductDetailSerializer
end
end
end
end
如果您真的打算序列化一系列ProductPrice对象,则需要pass the each_serializer
option。
module Api
module V1
class ProductDetailsController < ApplicationController
def show
@prod = ProductPrice.joins(:product, :retailer).all
render json: @prod, each_serializer: ProductDetailSerializer
end
end
end
end