Ember-data似乎想要一个假设的Color模型的数据数组看起来像:
{
"colors": [{
name: "red"
}, {
name: "blue"
}, {
name: "green"
}]
}
即。它需要一个根元素,它是模型所属类型的复数。我想知道如何使用active_model_serializers gem让rails以这种方式发送JSON。这就是我所拥有的:
# GET /colors
# GET /colors.json
def index
@colors = Color.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @colors, :root => 'colors' }
end
end
但这会产生:
{
colors: [
{
colors: {
name: "red"
}
}, {
colors: {
name: "blue"
}
}, {
colors: {
name: "green"
}
}
}]
}
即。数组和上的每个对象都有一个根元素。我只想在阵列上。任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
我最终通过添加自己的自定义序列化器
解决了这个问题应用程序/串行器/ color_serializer.rb
class ColorSerializer < ActiveModel::Serializer
attributes :name
self.root = false
end
然后使用
render json: @colors, each_serializer: ColorSerializer
禁用了每个对象的根元素,同时保留了数组的根元素。