2014-01-23 45 views
1

灰燼數據似乎希望數據的假想色模型數組看起來像:準備Rails的JSON的灰燼數據

{ 
    "colors": [{ 
    name: "red" 
    }, { 
    name: "blue" 
    }, { 
    name: "green" 
    }] 
} 

即它想要一個根元素是任何類型的模型複數是。我想知道如何讓rails使用active_model_serializers gem來發送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

我不是一個鐵桿人,但我知道有一個Ember數據適配器/序列化器('ActiveModelAdapter' /'ActiveModelSerializer'),這是專門爲rails後端api。你在使用它們嗎? – Kingpin2k

+0

我相信你已經瀏覽了這個頁面,https://github.com/rails-api/active_model_serializers – Kingpin2k

回答

1

我最終加入我自己的自定義序列

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

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

,然後使用

render json: @colors, each_serializer: ColorSerializer 
其禁用每個對象的根元素

解決了這個同時保留數組上的根元素。