If you are using the latest version of iron router, i suggest you update the code to something a bit more modern.

First you create a general app controller:

ApplicationController = RouteController.extend({ layoutTemplate: 'DefaultLayout', loadingTemplate: 'loading_template', notFoundTemplate: '404_template', });

Then you start to extend it for different purposes:

ProfileController = ApplicationController.extend({ show_single: function() { this.render('profile'); } });

After this you can create your routes for the profile part

Router.route('/profile/:_id', { controller: 'ProfileController', action: 'show_single', waitOn: function() { return [ Meteor.subscribe("userInfo"), Meteor.subscribe("profilepic") ]; }, subscriptions: function() { this.subscribe("somethingyoudontneedtowaitfor", this.params._id); }, data: function() { if (this.ready()) { return { user: Info.findOne({ _id: this.params._id }), pic: Profilepics.findOne({ _id: this.params._id }) }; } } });

It might be a bit more code, but it gives you complete control over what it does. Also, using this, while the router is waiting for the subscriptions to be ready, it displays the loading template defined above. If you don't want to display the loading, you move the subscriptions out of waiton.