2016-03-03 69 views
0

我有一個運行Rails API後端的Ember應用程序,而且我遇到了一個奇怪的問題。我希望存儲在API中的Message模型數據將堆棧發送到Ember。我已經播種的數據庫,內置符合此遷移一對夫婦的消息:Ember Date從Rails API返回「Undefined」

class CreateMessages < ActiveRecord::Migration[5.0] 
    def change 
    create_table :messages do |t| 
     t.text :body 
     t.boolean :flagged 

     t.timestamps 
    end 
    end 
end 

加上一個看起來像這樣串行:

class MessageSerializer < ActiveModel::Serializer 
    attributes :id, :body, :flagged, :created_at, :updated_at  
end 

在灰燼的一面,我的模型是建立像這樣:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    body: DS.attr('string'), 
    flagged: DS.attr('boolean'), 
    createdAt: DS.attr('date'), 
    updatedAt: DS.attr('date') 
}); 

灰燼同時顯示了標記和身體PARAMS得很好,但它只返回undefinedcreatedAtupdatedAt。通過檢查Rails的控制檯,快速測試的第一條消息返回是這樣的:

message.as_json 
=> {"id"=>1, "body"=>"Etsy actually four dollar toast seitan. Schlitz twee kale chips pork belly franzen tote bag.", "flagged"=>true, "created_at"=>Wed, 02 Mar 2016 21:33:55 UTC +00:00, "updated_at"=>Wed, 02 Mar 2016 21:33:55 UTC +00:00} 

我已經看到了在GitHub上是這樣做或多或少與一些參考,我想不出哪裏的東西已經消失。任何幫助感謝!

+0

您使用的是主動模型適配器嗎? –

+0

您是否確認日期序列化是'date'轉換期望的格式? – locks

+0

我可以確認ActiveModel正在使用中,並且據我所知,日期轉換應該是匹配的序列化。這就是說,對於Ember來說還是很新的:有沒有一種快速的方法來通過控制檯來測試? – LukePatrick

回答

1

如果其他人有這個問題,該解決方案看似簡單。我所要做的就是補充:

ember g serializer message

然後填寫該文件有:

import DS from 'ember-data'; 

export default DS.JSONAPISerializer.extend({ 
    keyForAttribute: function(key) { 
    return Ember.String.decamelize(key); 
    } 
}); 

很容易的!由於某種原因,將其插入application.js無法正常工作,但這樣做完成了工作。