2015-01-08 4 views
0
App.Locale = DS.Model.extend 
    language: DS.belongsTo("language") 

App.LocaleSerializer = App.ApplicationSerializer.extend 
    attrs: 
    language: { serialize: "id", deserialize: "records" } 

Использование ember с рельсами в качестве основы. Я пытаюсь создать локаль, у которой есть выпадающий список, чтобы выбрать язык. Моя идея - передать language_id на бэкэнд, но я получаю следующее, когда я отправляю.Дата истечения срока годности с сериализованным идентификатором

{"locale"=>{"language"=>"15" } 

Как преобразовать это выглядеть

{"locale"=>{"language_id"=>"15" } 

Благодарности

ответ

1

Предполагая, что вы используете ActiveModelSerializer, я думаю, что ваш ответ here. Просто добавьте атрибут key в хэш:

App.LocaleSerializer = App.ApplicationSerializer.extend 
    attrs: 
    language: { key: "language_id", serialize: "id", deserialize: "records" } 

Если вы хотите использовать только language_id при сериализации, но получить language при десериализации, вы всегда можете переопределить serializeBelongsTo:

App.LocaleSerializer = App.ApplicationSerializer.extend 
    serializeBelongsTo: (record, json, relationship) -> 
    if relationship.key is 'language' 
     json.language_id = Ember.get record, 'language.id' 
    else 
     @_super record, json, relationship