我正在运行Rails 4.2 - AMS 0.9应用程序,我(为了说明目的)有3个模型:Foo
has_one Bar
,has_many Baz
es。我只在响应中获取ID,而不是侧载项。是否有配置选项,或者我错过了什么?
我的AMS课程是:
class FooSerializer < ActiveModel::Serializer
embed :ids, include: true
has_one :bar, key: :bar ## For ember-data; it doesn't like "_id"
has_many :bazes, key: :bazes
attributes :id, :etc
end
StackOverflow上有很多关于AMS的主题,在发布之前我读了很多,但这让我感到非常难过。
答案 0 :(得分:2)
经过一系列的实验,我不得不在控制器中调用以下内容:
format.json { render json: ActiveModel::ArraySerializer.new(@foos, each_serializer: FooSerializer), root: :foos }
root: :foos
(顺便说一句,甚至不是“真的”有效,序列化程序本身也没有self.root = true
或self.root = :foos
)是关键位。
答案 1 :(得分:0)
@Ted的答案对我来说适用于数组,但是当我尝试以show方法进行序列化时,我当然不能使用AciveModel::ArraySerializer
。在研究为什么为什么Ted的答案有效时,我在AMS文档中碰到了这条小线
当控制器不继承自ActionController :: Base时,请手动添加序列化模块
class ApplicationController < ActionController::API
include ActionController::Serialization
end
由于我的rails应用程序仅是api,因此正是我所需要的。