2015-11-13 229 views
3

當您在iron中創建通配符URL:流星路徑爲模板助手,但也Router.go和Router.routes [routeName] .path()似乎被打破。鐵:路由器通配符路徑生成似乎被破壞

這是我們的路線:

Router.route('/:urlQuery*', function(){ 
    this.render('ourTemplate'); 
}, { 
    name : 'ourRoute', 
}); 

要訪問生成的URL到這一點,我們嘗試了以下內容:

Router.go('ourRoute', {urlQuery : 'test'}); 
Router.go('ourRoute', {urlQuery : ['test']}); 
Router.go('ourRoute', {urlQuery : null}); 
Router.go('ourRoute', {urlQuery : false}); 

Router.routes.ourRoute.path({urlQuery : 'test'}); 
Router.routes.ourRoute.path({urlQuery : ['test']}); 
Router.routes.ourRoute.path({urlQuery : null}); 
Router.routes.ourRoute.path({urlQuery : false}); 

和 - 當然 - 我們也嘗試了{{pathFor}}模板-幫手。

每天的代碼行拋出了同樣的錯誤:

Uncaught Error: You are trying to access a wild card parameter at index 0 but the value of params at that index is undefined 

我沒有發現在鐵的任何參考:路由器指南所以我的問題是:如何產生鐵網址:路由器用通配符作爲參數?

+0

*上的/ *:urlQuery *是什麼?我還沒有看到,樂聲就像你的混音參數和正則表達式? – FloatingCoder

+0

這是通配符的符號。因此,例如route/test1/test2會在urlQuery參數中保存「test1/test2」。 – TJR

+0

我以前從未見過。你是否想過正則表達式? http://stackoverflow.com/questions/27455206/when-using-a-regex-in-iron-router-how-to-access-the-match –

回答

2

看起來像鐵路路由器使用path-to-regexp但用於鐵路路由器的格式有點不同,並不是很清楚。試試這個...

Router.route('/:urlQuery(.*)', function(){ 

的()會告訴它採取帕拉姆名稱,重複0次或更多次。只是urlQuery正在打破我想的名字,並使其成爲正則表達式的一部分。現在,如果你想通過多張對象Router.go數組,你會有另外一個問題...

Router.go("our.route", {urlquery: ['test', 'another']}); 

產生類似如下的URL ...

http://localhost:3000/test%2Canother 

但是這另一個問題我還沒有答案。也許在Router.go中發送多個,更好的方法是自己連接它們。看起來像鐵路路由器和路徑正則表達式尚未完全集成嗎?