Ruby on rails 活动模型序列化程序:呈现值数组仅呈现第一个值
我有一个值数组:Ruby on rails 活动模型序列化程序:呈现值数组仅呈现第一个值,ruby-on-rails,active-model-serializers,Ruby On Rails,Active Model Serializers,我有一个值数组:[1,2,3,4,5] 我希望使用json\u api呈现这些内容。我已经成功地将ActiveModelSerializers::Model用于其他目的,以呈现单个普通Ruby对象。但在本例中,我有一个对象数组。渲染时,AMS仅渲染第一个对象 安装程序 模型 我希望所有5个模型都被渲染,但似乎只有第一个模型被渲染。有什么想法吗 使用active\u model\u序列化程序(0.10.7)我确信您不再需要它,但这可能会对某些人有所帮助 我有一个类似的问题:在我的例子中,问题是我使
[1,2,3,4,5]
我希望使用json\u api
呈现这些内容。我已经成功地将ActiveModelSerializers::Model
用于其他目的,以呈现单个普通Ruby对象。但在本例中,我有一个对象数组。渲染时,AMS仅渲染第一个对象
安装程序
模型
我希望所有5个模型都被渲染,但似乎只有第一个模型被渲染。有什么想法吗
使用
active\u model\u序列化程序(0.10.7)
我确信您不再需要它,但这可能会对某些人有所帮助
我有一个类似的问题:在我的例子中,问题是我使用了一个id=nil的资源。
它只生成了一个条目!
一旦我用唯一标识符填充了id
,它就按预期工作了
我意识到阅读json:api格式(),因为其中一个要求是:
每个资源对象必须包含一个id成员和一个类型成员。id和类型成员的值必须是字符串。
我希望这能有所帮助您确定您有5个独特的条目吗?运行
rails控制台中的Option.pluck(:step).uniq能给您带来什么?是的,它们是独一无二的。运行Option.pull(:step).uniq.map{v | step.new(value:v)}
生成5个对象,值为1-5。Tryrender json:steps,each_serializer:step serializer
找到解决方案了吗?
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
}
}]
}