Ошибка метеора: на пути отсутствуют обязательные параметры. Отсутствуют следующие параметры: ["_id"]. Переданный объект params был: {}
У меня есть это в моих маршрутах:
Router.map(function() {
...
this.route('studentEdit', {
path: '/student/:_id/edit',
data: function() {
return Students.findOne(this.params._id);
},
});
this.route('studentDetail', {
path: '/student/:_id',
data: function() {
return Students.findOne(this.params._id);
}
});
...
});
И у меня есть это в моем шаблоне с помощью автоформы:
{{#autoForm collection="Students" id="studentEdit" doc=this type="update"}}
{{> afQuickField name='name'}}
{{> afQuickField name='phone'}}
{{> afQuickField name='address' rows=6}}
{{> afQuickField name='remarks' rows=6}}
<button type="submit" class="btn waves-effect waves-light"><i class="material-icons">save</i></button>
{{/autoForm}}
Страница редактирования загружается нормально, с предварительно заполненными полями. И когда я сохраняю, он сохраняет, но не перенаправляет на страницу сведений и возвращает эту ошибку в консоли:
Exception in delivering result of invoking '/students/update': Error: Missing required parameters on path "/student/:_id". The missing params are: ["_id"]. The params object passed in was: {}.
ОБНОВЛЕНИЕ Маршрутизация на страницу сведений теперь работает, но ошибка все еще существует в консоли. Я должен что-то упустить. Вот что я сделал, чтобы заставить это работать пока:
var moveOnRouter = {
onSuccess: function(formType, result) {
Router.go('studentDetail', {_id: this.docId});
}
}
AutoForm.addHooks('studentEdit', moveOnRouter);
1 ответ
Вам нужно явно go
на другой маршрут при отправке из вашей формы. Но так как ваша кнопка submit
Вы также должны предотвратить действие отправки по умолчанию.
С шаблонными событиями вы бы сделали что-то вроде:
Template.myTemplate.events({
'submit .btn'(ev) {
ev.preventDefault();
router.go('studentDetail',{ _id: this.docId });
}
});
Но так как вы подключаете автоформу, возможно, легче просто удалить type="submit"
из вашего определения кнопки.