如何使用Iron Router路由到提交的帖子?

时间:2015-03-21 12:43:22

标签: meteor iron-router

我需要在Meteor应用程序的服务器端提交一篇文章。帖子提交正常,但路由器没有路由到问题页面'并且它会抛出错误说 - 提供调用结果的异常' insertProblem':错误:路径上缺少必需的参数" / problems /:_ id"。缺少的参数是:[" _id"]。传入的params对象是:{}。我做错了什么?



'submit form':function(event) {
    event.preventDefault();

    var post = {
    postProblem: $(event.target).find('[name=problem]').val(),
    postWhy1: $(event.target).find('[name=why1]').val(),
    postWhy2: $(event.target).find('[name=why2]').val(),
    postWhy3: $(event.target).find('[name=why3]').val(),
    postWhy4: $(event.target).find('[name=why4]').val(),
    postWhy5: $(event.target).find('[name=why5]').val(),
    postSolution:$(event.target).find('[name=solution]').val(),
    submitdate: new Date()
    };

    Meteor.call('insertProblem', post, function(result) {
        Router.go('problemPage', {_id: result._id});
      });
  }
});






Problems = new Meteor.Collection("problems");

Meteor.methods({
	insertProblem: function(post) {
		var postId = Posts.insert(post);

		return {
			_id: postId
		};
	}
});




和路由器当然:



// redirect to the current submitted problem
Router.route('problems/:_id', {
	name: 'problemPage',
	data: function() { return Problems.findOne(this.params._id);
	}
});




1 个答案:

答案 0 :(得分:0)

router.go应该像这样工作。

Router.go('problemPage', result._id);

但错误是抱怨获取空对象,所以我们这样做,将meteor.call更改为此。

Meteor.call('insertProblem', post, function(error,result) {
        if(!error){
          console.log(result)
          console.log(result._id)
          Router.go('problemPage' + result._id); //it may work to with the + operator
        }
      });