2014-10-15 3 views
0

내 응용 프로그램은 수영 수업 용입니다. 수영을 수영 반에 추가해야합니다. 이 관계는 양방향으로 많이 있습니다. 레슨은 많은 스위 머를 가질 수 있고 스위 머는 많은 레슨을 가질 수 있습니다.두 번째 모델을 경로에 추가하십시오.

강의 경로에서 모든 수영 선수 목록에서 수영 선수를 선택하고 해당 수영 선수의 ID를 수업의 "수영 선수"배열에 추가하고 싶습니다.

두 번째 모델을 올바르게로드하지 않는다고 생각하기 때문에 드롭 다운 필드에 수영 선수가 표시되지 않습니다.

특정 수영 선수를 특정 클래스에 추가하는 방법에 대한 제안도 열려 있습니다. 사용 가능한 모든 수영 선수를 보는 것이 중요합니다.

나는 엠버와 프로그래밍에 새로운 것이므로 권장 할 때 이것을 명심하십시오. 고맙습니다! 드롭 다운 내가 사용하려고

App.Router.map(function() { 
this.resource('lessons', { path: '/lessons' }, function() { 
    this.resource('lesson', { path: '/:lesson_id' }) 
    this.route('new', { path: '/new' }) 
}); 

this.resource('swimmers', { path: '/swimmers' }, function() { 
    this.resource('swimmer', { path: '/:swimmer_id' }) 
    this.route('new', { path: '/new' }) 
}); 

}); 


App.Lesson = DS.Model.extend({ 

type: DS.attr(), 
name: DS.attr(), 
/*level: DS.attr(), sometimes there are hybrid levels, likely leave it up to */ 
instructor:DS.belongsTo('instructor', {async: true}), 
startDate: DS.attr(), 
endDate: DS.attr(), 
capacity: DS.attr('number'), 
swimmers: DS.hasMany('swimmer',{async: true}), 
}); 

App.Swimmer = DS.Model.extend({ 


    nameFirst: DS.attr(), 
    nameLast: DS.attr(), 
    level: DS.attr(), 
    birthdate: DS.attr(), 
    gender: DS.attr(), 
    note:DS.attr(), 
    lessons: DS.hasMany('lesson', {async: true}), 
    }); 



App.LessonRoute = Ember.Route.extend({ 
    model: function(params) { 
     return Ember.RSVP.hash({ 
      lesson: this.store.find('lesson', params.lesson_id), 
      swimmers: this.store.findAll('swimmer') 
     }) 
    }, 

    setupController: function(controller, model) { 
    controller.set('model', model.lesson); 
    controller.set('swimmer', model.swimmer); 
    }, 
}); 

    <div class="form-group"> 
         <label for="lesson_swimmers" class="col-sm-2 control-  label">Swimmers</label> 
         <div class="col-sm-9"> 
         {{view Ember.Select content=swimmers optionLabelPath="content.fullName" class="form-control" id="lesson_swimmers"}} 
         </div> 
        </div> 
+0

시도 변수의 이름을 변경하는'controller.set ('수영', model.swimmer을)'->'controller.set (' swimers ', model.swimmers);'App.LessonRoute.model' 훅과'App.LessonRoute.setupController' 훅에서 모델의 속성을 일치시킵니다. – Microfed

+0

시도해 보았으나 이제 라우트 처리 중 오류가 발생했습니다 : 레슨 어설 션 실패 : 오브젝트 프록시의 'content'속성에 set ('swimmers',)를 위임 할 수 없습니다. : its 'content'는 정의되지 않았습니다. 오류 : 어설 션 실패 : 객체 프록시 의 'content'속성에 set ('swimmers')을 위임 할 수 없습니다. 'content'가 정의되지 않았습니다. – theNewGuy

+0

'swimmers'속성을 App에 추가해야합니다. .LessonController ('swimmers : null') – Microfed

답변

0

이 질문에 두 가지 답변이 있습니다. 올바른 모델은 모델을 제공하는 방법에 따라 다릅니다.

당신은 당신이 URL을 통해 직접 도착하는 것보다 다른 방법을 사용해야합니다 LINKTO transferTo 또는 를 통해 도착하는 경우.

Kingpin2k 질문에 응답하고 여기 예제를 제공합니다 @,

Kingpin2k's elegant solution.