Is anyone else getting the following error from Iron-Router since upgrading Meteor to version 1.0?
Please post here if you know how to resolve this issue.
Route dispatch never rendered. Did you forget to call
this.next()in anonBeforeAction?
Router.map(function () {
Router.route('profileShow', {
waitOn: function () {
if (Meteor.user()) {
Meteor.subscribe('userData');
} else {
this.next();
}
},
data: function () {
if (Meteor.user()) {
return {profile: Meteor.user().profile};
}
}
});
});
There was a non backwards-compatible change in the newest version of Iron Router. The migration guide says:
onRunandonBeforeActionhooks now require you to callthis.next(), and no longer take apause()argument. So the default behaviour is reversed. For example, if you had:
Router.onBeforeAction(function(pause) {
if (! Meteor.userId()) {
this.render('login');
pause();
}
});
You'll need to update it to
Router.onBeforeAction(function() {
if (! Meteor.userId()) {
this.render('login');
} else {
this.next();
}
});
More information
In your case, the by-the-book fix would be to add this.next() at the end of onBeforeAction. However, you should rather use waitOn:
waitOn: function () {
return Meteor.subscribe("userData");
}
That way, you can set a loadingTemplate which will appear while the userData subscription is loading.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With