중첩 모델 예제에서 코드 백백 \ 백본 레일을 사용하고 있습니다 (예 : 작업 컬렉션이 있고 각각 세부 정보 컬렉션을 가질 수 있습니다. 예).Backbone.js - 레일 및 중첩 된 컬렉션 작업에 대한 지침
내가 원하는 데이터를 표시하기 위해 일련의 중첩 된 뷰를로드하고 만들 수 있지만 해당 데이터에 대해 CRUD 작업을 수행하려고 할 때 막혔습니다.
예를 들어, 바깥 쪽 (위쪽) 개체의 특성을 변경하고 해당 데이터를 서버로 보내려한다고 가정 해보십시오. json이 어떻게 생겼는지 보여줍니다. 제가했습니다 -
{
"task" => {
"name" => "testupdate",
"user_id" => 1,
"id" => 3,
"Details" => [
[0] {
"task_id" => 3,
"break_length" => 4,
"completed" => false,
"id" => 12,
"length" => 25,
"location_id" => nil,
"note" => "test444",
"start_date_time" => "2011-12-15T00:00:00Z"
}
],
"details_attributes" => [
[0] {
"start_date_time" => "2011-12-15T00:00:00Z",
"completed" => false,
"note" => "test444",
"break_length" => 4,
"task_id" => 3,
"id" => 12,
"length" => 25,
"location_id" => nil
}
]
}
}
참고 : 나는 응용 프로그램을로드 할 때 나는 "열심히"내 중첩 된 데이터를로드하기 때문에, 나는 (details_attributes 형식으로 볼) 업데이 트 에 다시 서버로 보낼거야 Task toJSON 메소드를 재정 의하여 Rails가 기대하는 "_attributes"를 가진 콜렉션을 장식한다.
한편, 서버에서이 변경을 수행하면 (예 : 중첩 된 양식을 사용하는) 구식 레일 방식으로 중첩 된 객체의 해시 (이 예에는 하나만 있지만 (Details_attributes 참조) :
{
"utf8" => "",
"authenticity_token" => "iv9wYvgqLt3nldVOX4AeAifpFaSHIfEj85MsPUaMiAw=",
"task" => {
"name" => "test",
"details_attributes" => {
"0" => {
"_destroy" => "",
"start_date_time" => "2011-12-15 00:00:00",
"length" => "25",
"completed" => "0",
"note" => "test444",
"break_length" => "4",
"id" => "12"
}
}
},
"commit" => "Update task",
"user_id" => "1",
"id" => "3"
}
내 json을 업데이트 할 수있는 방법에 대한 안내는 서버에서 받아 들여야하는 것처럼 보입니까?
도움 주셔서 감사합니다.
이것은 나에게 가깝다 - (그리고 나는 자바 스크립트 전문가가 아니다) - 내 콘솔 로그에서 더 잘 보이는 것을 볼 수 있지만, 서버로 보내면 json은 다음과 같이 보일 것이다 :'{ "object Object "=> nil,"user_id "=>"1 ","id "=>"6 "}'- Backbone.sync 용 슈퍼를 호출 할 때 뭔가 잘못하고 있습니다 ... –
실제로 - 잘못되었습니다. - 레일은 해시 대신 배열로 데이터를 보내는 것으로 괜찮 았지만 세부 정보와 details_attributes를 보내는 데 문제가있었습니다. 내 toJSON 메서드에서 세부 정보를 필터링했는데 작동 중입니다 ... –
상관 없어요 - 이제 동기화로 무엇을 할 수 있는지 알고 있습니다! –