2012-11-11 2 views
1

나는 엠버에서 초보자이며, 어제부터 내 머리를 긁어왔다. 에버와 레일러를 사용하여 간단한 시리얼 라이저를 사용하는 Blog 예제를 만들고 싶습니다.ember 중첩 리소스 FK 값을 만들 때

게시물에 대해 CRUD를 만들 수 있었지만 아무런 문제가 없습니다. 대부분의 코드는 라우터에 있습니다.

내가 그렇게 선언 내 의견에 문제가 :/#/게시물/: ID/주석 게시물의 코멘트를 표시

App.Comment = DS.Model.extend 
    body: DS.attr('string') 
    post: DS.belongsTo('App.Post') 

App.Post = DS.Model.extend 
    title: DS.attr('string') 
    body: DS.attr('string') 
    comments: DS.hasMany('App.Comment',embedded: true)  

확인입니다, 경로는 것 같습니다.

새로운 코멘트 링크가 comments'list의 바닥에, 그래서 새로운 코멘트를 만들기위한 경로는 다음과 같습니다

/#/게시물/: 그 시점에서

새로운 ID/의견/i를 누르 문제 : 어떻게 그 게시물이 그 코멘트를 소유하고있는 에머 - 데이터를 말합니까? 나는 Whart이 그것을하는 가장 좋은 방법이라는 것을 의미합니까?

마지막으로 나는 양식을 표시하기 전에 comment.post_id를 초기화하고 라우터에 코딩하도록 결정했습니다. 모양은 다음과 같습니다.

하지만 작동하지 않습니다. 서버로 돌아 오면 게시 요청에 post_id 값이 없습니다.

저장하기 전에 값을 확인하기 위해 양식에 post_id의 입력 필드를 추가하려고했는데 값이 거기에 있고 정확합니다.

양식을 제출할 때 해고 된 라우터에서 저장 기능을 디버깅하려고했습니다. 여기에서도 역시 post_id 값이 정확합니다.

난 내가 무엇을 모르는 지옥하지만 뭔가 .....

필립

답변

1

당신은 코멘트에 게시물을 설정해야 누락 아닌 post_id 속성을 통해해야합니다.

예, post_id은 서버와 엠 버 데이터가 협회의 외래 키를 직렬화하는 방법이지만 엠버 데이터가 추상화하고자하는 세부 사항입니다. 모델과 상호 작용할 때, 연관 데이터 (또는 실제 데이터)가 Ember Data에 의해 직렬화되고 서버로 전달되는 방법을 알거나 신경 쓰지 않아야합니다. 실제로 레일스와 달리 post_id은 실제로 Comment 레코드의 속성으로 존재하지 않습니다.

대신 모델에 정의 된대로 특성 및 연관을 사용하여 상호 작용해야합니다. post belongsTo 연결을 사용하는 Comment 모델의 경우 comment.set('post', post)을 사용하면됩니다. 레일스에서 ​​comment.post = post처럼 행동하여 모든 세부 사항을 처리합니다.

+0

답변을 주셔서 감사합니다. 일주일 동안 끝내주는 자유 시간 프로젝트이기 때문에, 일주일 동안 활발하게 작업하지는 않았지만, 이틀 전에 동일한 ID를 사용했습니다. 나는이 방법으로 작동하도록 노력할 것입니다. 그것은 분명히 올바른 방법입니다! – elfif