【发布时间】:2018-05-17 16:47:43
【问题描述】:
我有一个值数组:[1, 2, 3, 4, 5]
我希望使用json_api 呈现这些。我已经成功地将ActiveModelSerializers::Model 用于其他目的来呈现单个普通的Ruby 对象。但在这种情况下,我有一个对象数组。渲染时,AMS 仅渲染第一个对象。
设置
型号
class Step < ActiveModelSerializers::Model
attr_accessor :value
end
序列化器
class StepSerializer < ActiveModel::Serializer
attributes :value
end
控制器
class Api::StepsController < Api::BaseController
def index
steps = Option.pluck(:step).uniq.map { |v| Step.new(value: v) }
render json: steps
end
end
输出
{
"data": [{
"id": "step",
"type": "step",
"attributes": {
"value": 1
}
}]
}
我希望渲染所有 5 个模型,但似乎只有第一个模型正在渲染。有什么想法吗?
使用active_model_serializers (0.10.7)
【问题讨论】:
-
您确定您有 5 个唯一条目吗?在
rails console中运行Option.pluck(:step).uniq会给你带来什么? -
是的,它们是独一无二的。运行
Option.pluck(:step).uniq.map { |v| Step.new(value: v) }会产生 5 个对象,其值为 1-5。 -
试试
render json: steps, each_serializer: StepSerializer -
您找到解决方案了吗?
标签: ruby-on-rails active-model-serializers