且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用active_model_serializers序列化一系列模型

更新时间:2023-09-28 23:27:58

由于需要与默认序列化程序不同的属性,我有一个控制器需要在其中指定序列化程序.

I have a controller that I need to specify the serializer in, due to wanting different attributes from the default serializer.

在控制器中:

  def index
    search = User.ransack(search_params)
    render json: search.result, each_serializer: MembershipRenewalSerializer::MemberSerializer
  end

那么,为了使事情顺利进行,如果您指定each_serializer选项会发生什么?

So, just to get things working, what happens if you specify the each_serializer option?

外部控制器:

ActiveModel::SerializableResource.new(
  User.first(2), 
  each_serializer: MembershipRenewalSerializer::MemberSerializer
).to_json

请注意,如果不指定each_serializer,则SerializableResource将使用UserSerializer.

Note, that without specifying each_serializer, SerializableResource would use the UserSerializer.

@admins数据似乎发生了一些奇怪的事情.

It looks like there is something weird happening with the @admins data.

尝试转换为数组:

ActiveModel::SerializableResource.new(@admins.to_a).to_json 

编辑#3

要对数组进行分页,请尝试以下操作:

Edit #3

To paginate your array, try the following:

@search = Admin.search(params[:q])
@results = @search.result(:distinct => true).to_a
@admins = Kaminari.paginate_array(@results).page(params[:page]).per(10)