Exception in template helper: TypeError: Cannot read property '_id'


#1

I have just moved from Flow router to Iron router and I now get this error:

Exception in template helper: TypeError: Cannot read property ‘_id’ of undefined at Object.tasks

I have changed this:
FROM: var appId = FlowRouter.getParam(“Id”);
TO: appId = this.params._id;

And when I click on the category links, content dont change.

When I navigate to a subpage like /network and then click a category link, then the content change but still no task list


#2

you need to provide more code for this. In particular, we need know what this is in your code.


#3

route:
Router.route(’/tasks/:_id’, function () {
this.render(‘tasktemplate’);
appId = this.params._id;

NAVI: template category:
a class=“nodec” href="/tasks/{{_id}}">input class=“mdl-navigation__link” id=“mainlink” style=‘width:100% border:0px;’ type=“text” value="{{categori}}" name=“catItem”>a


#4

This seems not the whole code. But that’s my guess:

  • you called this.params._id; in a template-helper, not in the router-function as you showed in your code example.
  • FlowRouter.getParam("Id"); works everywhere and in particular in a template-helper, while this.params._id; can’t work in a helper, because this has a different meaning there.
  • If you need the appId in the “tasktemplate”, you should pass it as a param to this.render

See https://github.com/iron-meteor/iron-router#quick-start

Pro tip: Wrap your code-examples in three backticks `, so that it is easier to read.


#5

thanks, it works perfect…