2013-11-01 5 views
0

Я пытаюсь загрузить форму редактирования по вложенному маршруту. Когда я нахожу URL-адрес для редактирования компании/companies/87/edit, я получаю шаблон редактирования, но вместо одной модели я получаю: DS.RecordArray: ember314. Это массив с одним объектом модели, который я хочу.Ember возвращает массив, когда ожидается одна запись

Я заметил, что ember314 - это тот же массив, который используется в модели шаблона компаний. Я попробовал возвратить модель CompanyEditRoute {}, и я вижу, что это изменение отражено в шаблоне. Я не уверен, как получить только модель, которую я хочу, а не внутри массива.

EDIT

Похоже, вложенные маршруты только собирание массив модели от основного маршрута. Это странно, потому что я подтвердил, что каждый метод маршрута Route вызывается, когда попадает соответствующий URL-адрес.

App.Router.map(function() { 
    this.resource('companies', function() { 
    this.resource('company', { path: ':company_id' }, function() { 
     this.route('edit'); 
    }); 
    }); 
}); 


App.CompanyEditRoute = Ember.Route.extend({ 
    model: function(params) { 
    return App.Company.find(params.company_id); 
    }, 

    renderTemplate: function() { 
    this.render({into: 'application', outlet: 'modal'}); 
    } 
}); 
+1

Что такое значение params.company_id. Я подозреваю, что это 'undefined', поэтому вы в основном вызываете' App.Company.find() 'снова, что, вероятно, также является вашей моделью для 'companines' –

+0

Вы верны! Как я могу получить доступ к company_id на моем пути редактирования в этом случае? –

+0

Nice catch Trek, modelFor ('company') – Kingpin2k

ответ

1

Просто догадка, но при использовании визуализации в renderTemplate крюком вы не уточняя контроллер, так что это может быть просто выбросить ваш контроллер и использовать родительский контроллер.

Посмотрите документацию, но я думаю, что это что-то вроде этого

renderTemplate: function(controller, model) { 
    this.render({into: 'application', outlet: 'modal', controller: controller}); 
} 
+0

Спасибо, kingpin2k. Я проверил через Ember Inspector, что правильный контроллер подключен. Если я ударил/компании/2, используется контроллер company.index, и если я нажму/компании/2/отредактирует контроллер company.edit. В обоих случаях он получает DS.RecordArray для модели. –

Смежные вопросы