預期

2016-03-22 62 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>