我使用的是Rails 4,Ember 1.2.0和Ember Data 1.0.0-beta.3 和 DS.ActiveModelSerializer。
我在保存与'有很多'关系的新记录时遇到问题。应该创建两个模型记录,但只能创建一个POST请求。
我有两个模型,如下所示:
Lingohub.SupportCase = DS.Model.extend({ subject: DS.attr('string'), status: DS.attr('string'), created_at: DS.attr('date'), supportCaseMessages: DS.hasMany('supportCaseMessage') }); Lingohub.SupportCaseMessage = DS.Model.extend({ supportCase: DS.belongsTo('supportCase'), text: DS.attr('string'), created_at: DS.attr('date') });
我的新路线创建支持案例和支持案例按摩:
Lingohub.SupportCasesNewRoute = Ember.Route.extend({ model: function() { var support_case = this.store.createRecord('supportCase'); support_case.get('supportCaseMessages').createRecord(); return support_case; } });
我的新表单如下所示:(我不知道你是否可以更轻松地绑定子属性?)
<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>
控制器中的'create'动作:
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}}
如何发送附加记录'支持案例消息'和关系?
答案 0 :(得分:0)
我试着回答我自己的问题。如果我执行以下操作,我会在“support_case”中嵌入“support_case_messages”,这真的是在一个POST请求中发送“两个模型”的最佳方式吗?
Lingohub.SupportCaseSerializer = DS.ActiveModelSerializer.extend({ serializeHasMany: function(record, json, relationship) { var key, jsonKey; key = relationship.key; jsonKey = Ember.String.underscore(key); json[jsonKey] = []; record.get(key).forEach(function(item) { return json[jsonKey].push(item); }); console.log(json) return json; } });