我的路由器没有按预期工作
My router doesn't work as expected
这是路由器代码
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时,根据我的路由器配置,URL应该是这个/screenshots/:_id
,但是我在浏览器中看到的是/screenshots/
没有 _id
,页面显示 404 - NOT FOUND。
是否可以创建嵌套路由?
因为在我点击执行上述路线的 link 之前。我会在这条路上
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
?
我将 _id 存储在 Session.get("itemId")
中。是否可以在路由的路径中以某种方式调用它?
我尝试了 '/item' + '/screenshots' + '/' + Session.get("itemId")
但没有用
或者有其他方法可以解决?
问题不在于问题中的代码,出现 404 页面是因为它没有将 id 传递到路径中,浏览器说 /screenshots/
而不是 /screenshots/randomId
因为它仅从 link 传递过来。
根据问题的补充和与 Behrouz 的聊天:因为值存储在会话中,我们可以使用
Template.registerHelper('session',function(input){
return Session.get(input);
});
注册一个名为 session 的全局模板助手,可以用 {{session session_var_name}} 调用并创建 link 如下:
<h4><a href="/screenshots/{{session "itemId"}}">Click to view the Screenshots</a>
这是路由器代码
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时,根据我的路由器配置,URL应该是这个/screenshots/:_id
,但是我在浏览器中看到的是/screenshots/
没有 _id
,页面显示 404 - NOT FOUND。
是否可以创建嵌套路由? 因为在我点击执行上述路线的 link 之前。我会在这条路上
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
?
我将 _id 存储在 Session.get("itemId")
中。是否可以在路由的路径中以某种方式调用它?
我尝试了 '/item' + '/screenshots' + '/' + Session.get("itemId")
但没有用
或者有其他方法可以解决?
问题不在于问题中的代码,出现 404 页面是因为它没有将 id 传递到路径中,浏览器说 /screenshots/
而不是 /screenshots/randomId
因为它仅从 link 传递过来。
根据问题的补充和与 Behrouz 的聊天:因为值存储在会话中,我们可以使用
Template.registerHelper('session',function(input){
return Session.get(input);
});
注册一个名为 session 的全局模板助手,可以用 {{session session_var_name}} 调用并创建 link 如下:
<h4><a href="/screenshots/{{session "itemId"}}">Click to view the Screenshots</a>