2013-07-03 3 views
1

Итак, я создаю небольшое игрушечное приложение для ember, которое представит пользователю некоторые подсказки с улучшением, чтобы создать комикс из. Через определенное время пользователь сможет загрузить свой завершенный комикс.Эмбер, создающий запись, отличную от текущего контроллера

У меня есть все, что работает до того, чтобы передать форму пользователю, чтобы загрузить свой завершенный комикс.

До сих пор все было одним маршрутом, контроллером и моделью (подсказки). В конце концов, они действительно должны работать с комическим альбомом. В настоящее время, все в том же шаблоне, и я ставлю форму загрузки на вид:

App.UploadComicView = Ember.View.extend 
    templateName: "upload_comic" 
    tagName: "form" 
    classes: ['form-horizontal'] 

    submit: -> 
    @get('controller').uploadComic(@get('comicTitle')) 
    false 

Для следующей модели:

App.Comic = DS.Model.extend 
    title: DS.attr('string') 

И я попытался сделать следующее в prompts_controller :

uploadComic: (title) -> 
    App.Comic.createRecord(title: title) 
    @get('store').commit() 

Однако, что попытки отправить действие обновления на контроллер подсказок на внутреннем интерфейсе, а не создать запрос к контроллеру комикса.

Так что, похоже, у меня действительно должен быть отдельный контроллер ember/шаблон/модель/маршрут для комиксов, но я не уверен, как добраться от контроллера подсказок в конце вызова контроллеру комиксов, чтобы для создания нового комического объекта в базе данных. Что еще хуже, мне также действительно нужно отправить выбранные запросы из текущего контроллера запросов в новый контекст.

Что было бы самым лучшим способом?

ответ

1

Когда вы сделаете App.Comic.createRecord, он сделает POST до /comics с запросом органа {title: 'your title'}. Это независимо от того, какой контроллер/местоположение вы его используете. Вы говорите, что он идет в другом месте? Пожалуйста, напишите jsbin, если это так.

Что касается необходимости связываться с другими контроллерами/доступами, вы можете использовать декларацию needs внутри другого контроллера.

needs: 'comics' 
comicsBinding: 'controllers.comics' 

Теперь вы можете получить доступ к контроллеру через комикс this.get('comics') внутри него.

+0

Так что я решил часть проблемы, но я все еще не совсем там. Я присвоил новую запись переменной 'comic', а затем сделал' comic.get ('store'). Commit() ', который сохраняет запись в конечной точке REST, однако она также пытается сохранить подсказки, которые должны 't обновляться вообще (отправляет 'Started PUT"/prompts/8 "для 127.0.0.1 в 2013-07-03 09:46:46 -0400'), который терпит неудачу, потому что в api нет действия по обновлению. – DVG

+0

Вы можете выделить изменения в комикс, используя 'transaction'. См. Это [ответ] (http://stackoverflow.com/a/17440711/2488281). –

+0

Спасибо, у меня возникли проблемы с получением транзакции, поэтому я задал новый вопрос. Благодаря! – DVG