I'm using Meteor with AutoForm & Iron Router.
I have an autoform for inserting a data, and I want to redirect to the page of the data I added after a successful insert. How should I do it?
Here is the For:
{{#autoForm collection="Products" id="add" type="insert"}}
<h4 class="ui dividing header">Products Information</h4>
{{> afQuickField name='name'}}
{{> afQuickField name='info'}}
<button type="submit" class="ui button">Insert</button>
{{/autoForm}}
Iron Router:
Router.route('/products/:_id', {
name: 'page',
data: function() { return Products.findOne(this.params._id);}
});
Callbacks/Hooks
AutoForm.hooks({
add: {
onSuccess: function(doc) {
Router.go('page', ???);
}
}
});
The AutoForm hook will return you the docId. See: https://github.com/aldeed/meteor-autoform#callbackshooks
this.docId: The _id attribute of the doc attached to the form, if there is one, or for an type='insert' form, the _id of the newly inserted doc, if one has been inserted.
So use:
Router.go('page',{_id: this.docId});
According to the doc on github, signatures changed: don't forget to declare the forms or null to apply the hooks.
for all forms
AutoForm.addHooks(null,{
onSuccess: function(formType, result) {
Router.go('page',{_id: this.docId});
}
});
for specific form
AutoForm.addHooks(['yourForm'],{
onSuccess: function(formType, result) {
Router.go('page',{_id: this.docId});
}
});
Best is to check the up to date signatures: https://github.com/aldeed/meteor-autoform#callbackshooks
onSuccess: function(formType, result) {
Router.go(
['adminDashboard', result, 'Edit'].join(''),
{_id: this.docId}
);
},
来源:https://stackoverflow.com/questions/29903775/route-to-the-new-data-submitted-by-meteor-autoform-using-iron-router