Rails:使用多个对象渲染 json

4 ruby json ruby-on-rails applicationcontroller active-model-serializers

我正在尝试通过调用返回多个对象:

def index
    beers = Beer.all
    micros = Micros.all
    render json: {beers: beers, micro: micros}  
end
Run Code Online (Sandbox Code Playgroud)

但是,对于这两个对象仅返回受尊重的序列化程序中列出的属性,而不是受尊重的序列化程序中的任何has_many、belongs_to 等关系。

如果我只是想返回一个对象,例如:

def index
    beers = Beer.all
    render json: beers 
end
Run Code Online (Sandbox Code Playgroud)

然后它工作正常并返回序列化程序中列出的所有关系。

如何使用多个对象修复调用以返回序列化程序中的所有内容,而不仅仅是属性?

小智 6

希望能帮到你

def index
  @beers = Beer.all
  @micros = Micros.all

  render json: {
     beers: ActiveModel::Serializer::CollectionSerializer.new(@beers, each_serializer: BeerSerializer),
     micros: ActiveModel::Serializer::CollectionSerializer.new(@micros, each_serializer: MicroSerializer),
  }
end
Run Code Online (Sandbox Code Playgroud)