Yes, I suppose that since you have no subscriptions when the template is being rendered, your Template.subscriptionsReady will return true and it attempts to render without actually having data. A way through that, to test, would be to set a RecativeVar to true after it has subscribed and use a helper to check that var instead on Template.subscriptionsReady.
Oh, and if you put it in a autorun, when the Flowrouter is ready it will run the correct subscription (it will re-run when the param changes). After you page is loaded, just run FlowRouter.getParam(“id”) in the console and you will see it is the new id