4

我正在使用 Rails 4、Ember 1.2.0 和 Ember Data 1.0.0-beta.3DS.ActiveModelSerializer。

我无法保存具有“有很多”关系的新记录。应该创建两个模型记录,但只能由一个 POST 请求创建。

我有 2 个模型,如下所示:

Lingohub.SupportCase = DS.Model.extend({
  主题:DS.attr('string'),
  状态:DS.attr('string'),
  created_at: DS.attr('日期'),

  supportCaseMessages: DS.hasMany('supportCaseMessage')
});

Lingohub.SupportCaseMessage = DS.Model.extend({
  supportCase: DS.belongsTo('supportCase'),
  文本:DS.attr('string'),
  created_at: DS.attr('日期')
});

我的新路线创建支持案例和支持案例按摩:

Lingohub.SupportCasesNewRoute = Ember.Route.extend({
  模型:函数(){
    var support_case = this.store.createRecord('supportCase');
    support_case.get('supportCaseMessages').createRecord();
    返回支持案例;
  }
});

我的新表单是这样的:(不知道能不能更简单的绑定一个子属性?)

<form {{action 'create' this on="submit"}} id="new_support_case">

  {{input value=subject}}

  {{!-- {{supportCaseMessages.0.text}} --}}
  {{#each supportCaseMessages}}
    {{textarea value=text}}
  {{/each}}

  <input type="submit">

</form>

控制器中的“创建”操作:

Lingohub.SupportCasesNewController = Ember.ObjectController.extend({

  actions: {
    create: function(supportCase) {
      var message = supportCase.get('supportCaseMessages.content')[0];

      console.log(message.get('text'))

      supportCase.save();

    }
  }

});

对服务器的POST请求仅发送“支持案例”!!

{"support_case"=>{"subject"=>"aaaaaa", "status"=>nil, "created_at"=>nil}}

如何发送附加记录“支持案例消息”和关系?

4

1 回答 1

0

我试着回答我自己的问题。如果我执行以下操作,我会在“support_case”中嵌入“support_case_messages”,这真的是在一个 POST 请求中发送“两个模型”的最佳方式吗?

Lingohub.SupportCaseSerializer = DS.ActiveModelSerializer.extend({
  serializeHasMany:函数(记录,json,关系){
    变量键,jsonKey;
    键=关系。键;
    jsonKey = Ember.String.underscore(key);
    json[jsonKey] = [];

    record.get(key).forEach(function(item) {
      返回 json[jsonKey].push(item);
    });

    控制台日志(json)

    返回 json;
  }
});
于 2013-12-04T15:05:58.677 回答