预期

2016-03-22 41 views
0

我的路由器不能正常工作,这是路由器代码预期

Router.route('screens', { 
    path: '/screenshots/:_id', 
    template: 'screens', 
    onBeforeAction: function(){ 
    Session.set("currentRoute", "screens"); 
    Session.set("screenshots", this.params._id); 
    this.next(); 
    } 
}); 

这是出于截图模板

Template.screens.helpers({ 
    ss: function() { 
     var screenshots = Session.get("screenshots"); 
     return Products.findOne({ _id: screenshots}); 
    } 
}); 

助手和我在这里称之为

<h4><a href="/screenshots/{{_id}}">Click to view the Screenshots</a> 

当我点击查看截图网址,URL应该是这个/screenshots/:_id根据我的路由器配置,但我看到的t他的浏览器是/screenshots/而没有_id,页面显示404 - NOT FOUND。

是否可以创建嵌套的路线? 因为之前我点击执行上述路线的链接。我将在这条航线

Router.route('itemDetails', { 
    path: '/item/:_id', 
    template: 'itemDetails', 
    onBeforeAction: function(){ 
    Session.set("currentRoute", "itemDetails"); 
    Session.set("itemId", this.params._id); 
    this.next(); 
    } 
}); 

和这条线路工作正常,我可以看到该项目_id,是有可能创造里面另一条路线有例如这条道路/item/:_id/screenshots

我有存储在Session.get("itemId")中的_id。是否有可能以某种方式在路线中调用它?

我试图'/item' + '/screenshots' + '/' + Session.get("itemId")但没有奏效

或者有其他的方式来解决呢?

+0

在其中链路填充你可以右键点击该链接并检查,以确保它实际上是添加{{_id}}部分的页面?如果它进入/截图/直接我怀疑它没有得到的ID在链接中添加的第一个地方,因为你的代码不应该清除ID或重定向你 –

+0

@PhilipPryde现在会尝试 –

+0

@PhilipPryde没有出现在控制台,当我检查 –

回答

1

问题不在于问题中的代码404页面发生,因为它没有将ID传入路径,浏览器说/screenshots/而不是/screenshots/randomId,因为它只从链接传递。

按增加的问题,并与贝洛兹聊天:因为值存储在会议上,我们可以使用

Template.registerHelper('session',function(input){ 
    return Session.get(input); 
}); 

注册称为会话全局模板助手可与被称为{{会议session_var_name} },然后创建下面的链接:

<h4><a href="/screenshots/{{session "itemId"}}">Click to view the Screenshots</a>