コメントが多い投稿があります。問題は、すべてのコメントを取得 できますが、単一のコメントを取得できず、結果として単一のコメントを編集できないことです。単一のコメントを取得できないため、トランザクションに単一のレコードを追加したり、単一のレコードを編集したりできないことを意味します。
コメントはサイドロードされ、ルートによってサポートされません。コメントに関連するコントローラーのルートは必要ありません。したがって、 controllerForを使用して ApplicationRoute で CommentController のモデルを設定し、[needs] API を使用して、モデルのコンテンツを必要とする他のコメント関連のコントローラーにモデルを含めます。
投稿をクリックしてコメントにアクセスできます ->投稿タイトルをクリックします ->コメントを追加* をクリックし、保存してeditcommentを再クリックします。
これはjsfiddle ですが、この質問に関連するコードの関連ビットは以下のとおりです。
EmBlog.ApplicationRoute = Ember.Route.extend({
setupController: function() {
this.controllerFor('comment').set('model', EmBlog.Comment.find());
}
});
コメント コントローラー
//Even when I use ArrayController, the error is still there
EmBlog.CommentController = Ember.ObjectController.extend({
content: null
});
編集を処理するコントローラー。すべてのエラーは editComment メソッドで発生します。
EmBlog.CommentEditController = Ember.ObjectController.extend({
needs: ['comment'],
isEditing: false,
editComment: function(post) {
var comment = this.get('controllers.comment.content');
var yk = comment.get('post');
//this line is undefined
console.log(yk);
var commentEdit = this.set('content', comment);
console.log(commentEdit);
transaction = this.get('store').transaction();
//Uncaught Error: assertion failed: You must pass a record into transaction.add()
transaction.add(commentEdit);
this.transaction = transaction;
this.set('isEditing', true);
}
});
ポスト/ショー用ハンドルバー
<script type="text/x-handlebars" data-template-name="posts/show">
{{render 'comment/edit' comment}}
</script>