多くのタスクを伴うモデルの予定があります。
タスクを持つ新しい予定モデルを作成すると、バックボーンで正常に機能します。しかし、モデルをさまざまなタスクの ID で更新しようとすると、機能しません。
次のエラーが表示されます。
ActiveRecord::AssociationTypeMismatch: Task(#1192000) expected,
got ActiveSupport::HashWithIndifferentAccess(#2458300)
パラメーター:
{"appointment"=>
{"id"=>"36",
"customer_id"=>"19",
"employee_id"=>"10",
"done"=>"",
"notes"=>"",
"starts_at"=>"2012-09-05 13:00:00 +0200",
"ends_at"=>"2012-09-05 14:30:00 +0200",
"bookingtype"=>"",
"tasks"=>
"[{\"created_at\"=>\"2012-09-04T13:37:17+02:00\",
\"duration\"=>\"60\", \"id\"=>\"12\",
\"task_category_id\"=>\"5\", \"updated_at\"=>\"2012-09-04T13:46:13+02:00\"}]",
"appointment"=>"",
"task_ids"=>"[\"12\"]"},
"action"=>"update",
"controller"=>"appointments",
"id"=>"36"}
リクエストに tasks と task_ids が含まれていることが問題であると考えていますが、バックボーンでそれを修正する方法がわかりません。
私の更新方法は次のようになります。
save: function() {
var self = this;
var tasks = [];
$("input:checked").each(function() {
tasks.push($(this).val());
});
this.model.save({starts_at: this.$('#appointment_starts_at_modal').val(), employee_id: this.$('#employeeSelect').val(), customer_id: this.$('#customerSelect').val(),
"starts_at(5i)": this.$('#appointment_starts_at_5i_modal').val() ,
"ends_at(5i)": this.$('#appointment_ends_at_5i_modal').val(), task_ids: tasks}, {
success: function(model, resp) {
self.model = model;
self.close();
},
error: function() {
//new App.Views.Error();
}
});
return false;
},