为Ember数据准备Rails JSON

时间:2014-01-23 02:57:15

标签: ruby-on-rails json ember.js ember-data

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"
      }
    }
  }]
}

即。数组上的每个对象都有一个根元素。我只想在阵列上。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

我最终通过添加自己的自定义序列化器

解决了这个问题

应用程序/串行器/ color_serializer.rb

class ColorSerializer < ActiveModel::Serializer
  attributes :name
  self.root = false
end

然后使用

render json: @colors, each_serializer: ColorSerializer

禁用了每个对象的根元素,同时保留了数组的根元素。