Я унаследовал приложение Ember.js, построенное на основе Rails API. Это было первоначально запущен следующим образом:Отношение модели Ember Rails
Ember.VERSION : 1.0.0 ember.js
DEBUG: Handlebars.VERSION : 1.0.0 ember.js
DEBUG: jQuery.VERSION : 1.10.2
, но они были обновлены следующим:
Ember : 1.7.1+pre.f095a455 ember.js
DEBUG: Ember Data : 1.0.0-beta.10+canary.30d6bf849b ember.js
DEBUG: Handlebars : 1.3.0 ember.js
используя Тлеющие рельсы камня.
При попытке сохранить модель раздела я попадаю в проблему большого блокатора. Каждая секция имеет отношение с моделью строки:
row: DS.belongsTo('row', { async: true })
и модель строки в ответе:
sections: DS.hasMany('section', { async: true })
Сохранение нового раздела выполняет следующую функцию в контроллере. Класс row отправляется и применяется к объекту до того, как этот объект отправляется в метод createRecord.
_createSection: function(row, new_section_data){
var store = this.get('store');
new_section_data.width = this.getNewSectionWidth(row);
new_section_data.position = this.getNewSectionPosition(row);
new_section_data.row = row;
var new_section = store.createRecord('section', new_section_data);
console.log(' returned new_section ');
console.log(new_section);
new_section.save().then(function() {
console.log('saved');
new_section.set('set_as_selected', true);
console.log(' new_section post save ');
console.log(new_section);
}, function() {
console.log('new section save failure');
});
return new_section;
},
Проблема возникает, как только создается модель. Строка на самом деле не применяется правильно к модели, и поэтому запрос API Rails не работает, и раздел не сохраняется.
Данные, содержащиеся в объекте new_section до запроса createRecord, как показано ниже:
html: "<p>New section</p>"
position: 3
row: Class
section_type_type: "TextSection"
width: 6
Это класс строки прилагается в приведенном выше коде (с расширенным узлом _data):
__ember1414408746094: "ember791"
__ember_meta__: Object
__nextSuper: undefined
_attributes: Object
_changesToSync: Object
_data: Object
id: 1
page: Class
page_id: 1
position: 1
sections: Array[2]
style: null
__proto__: Object
_deferredTriggers: Array[0]
_hasHadSections: true
_inFlightAttributes: Object
_relationships: Object
_updatingRecordArraysLater: false
container: Container
currentState: Object
defaultStyleObject: Object
id: "1"
store: Class
updateTimeout: 7
__proto__: Class
section_type_type: "TextSection"
width: 6
Тем не менее, следующее является _data узел из возвращаемой переменной new_section:
_data: Object
contact_form_fields: Array[0]
created_at: "2014-10-27T11:14:39.000Z"
deleted_at: null
gallery_images: Array[0]
heading_visible: false
height: null
html: "<p>New section</p>"
id: 21
position: 3
row: null
section_type_id: 19
section_type_type: "TextSection"
style: null
updated_at: "2014-10-27T11:14:39.000Z"
width: 6
Здесь вы можете увидеть, что значение строки равно null.
У меня возникли трудности (большие), пытаясь выяснить, где эта проблема. Это может быть связано с обновлением данных Ember (это было первоначально построено с использованием более старой версии), но я боюсь, что у меня нет знаний, чтобы понять, что изменилось и почему это происходит.
Любая помощь, которую любой может предоставить, будет очень полезной, спасибо.