0
App.Locale = DS.Model.extend
  language: DS.belongsTo("language")

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

使用带有 rails 的 ember 作为后端。我正在尝试创建一个语言环境,其中有一个用于选择语言的下拉菜单。我的想法是将 language_id 传递给后端,但是当我提交时得到以下信息。

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

我如何将其转换为看起来像

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

谢谢

4

1 回答 1

1

假设您正在使用ActiveModelSerializer,我认为您的答案就在这里。只需将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
于 2015-01-08T12:41:27.613 回答