Ваша проблема, вероятно, в том, что ваш model
хук не реализован. Немного контекста для этого:
Здесь важно понимать, что если вы создадите ссылку типа <LinkTo @route="rental" @model={{@rental}}>
и нажмете на нее, хук model()
на rental
заполнит маршрут не выполняться. Вместо этого будет использоваться все, что вы передадите в @model
. То же самое верно и при выполнении Router#transitionTo('rental', model)
.
Так что это работает, потому что у вас уже есть загруженные данные. Однако при перезагрузке выполняется model
хук маршрута rental
. И поскольку вы этого не реализовали, будет использоваться хук модели по умолчанию. И этот довольно волшебный. Он проверяет имя вашего сегмента Dynami c, то есть rental_id
. И если это somethind_id
, это будет в основном return this.store.findRecord('something', params.something_id)
. Итак, в вашем случае хук модели по умолчанию эквивалентен этому:
model(params) {
return this.store.findRecord('rental', params.rental_id);
}
, но у вас нет модели данных ember с именем rental
, поэтому вы получаете сообщение об ошибке:
Ошибка: не была найдена модель для 'проката'
Поэтому, чтобы исправить это, вы должны убедиться, что ваш model
хук присутствует и правильно реализован.
Одно важное замечание:
<LinkTo
и transitionTo
выполнят хук model()
, если вы передадите строку или число. Таким образом, вы можете сделать <LinkTo @route="rental" @model={{@rental.id}}>
, и выполнит хук модели, используя то, что вы передали в @model
как сегмент динамического c, а не значение модели. Я лично видел несколько приложений, которые всегда передают идентификатор, поэтому у них нет ошибки, которую вы не заметили. И лично я бы порекомендовал это.