2014-12-05 111 views
1

我希望能夠匹配這樣的路徑: /path/anything/goes/here/and/can/be/an/arbitrarily/long/path鐵:路由器「globbing」不起作用

所以,我試圖以下所有:

Router.route('/path/*', function(){ 
    this.render('home'); 
}); 

我也試過的路徑:'/path/:something(*)'和我還試圖options對象,指定的路徑中的第二個參數Router.route:與動作功能沿着{path: '/path/*', action:myActionFunction}。我甚至用Router.map代替Router.route嘗試,規定在以下兩個:

https://gentlenode.com/journal/meteor-11-iron-router-cheatsheet/18

http://www.manuel-schoebel.com/blog/iron-router-tutorial

但儘管如此,要到/path/anything/goes/here不起作用。它帶我到默認的鐵:路由器的錯誤頁面:

哎呀,看起來像有在客戶端上的路由或URL服務器:「HTTP本地主機... :1710 .../path/this/should/work/according/to/the/above/links。「

任何幫助表示讚賞,感謝。

回答

2

嘗試

'/(.*)'

'/path/(.*)'

如果URL確實是domain.com/path/

我從發球路線 '/(.*)'通過查閱來自這個文件的一個集合。

如果您需要任何路由,請將流量路由放入Meteor.startup中,然後在您的路由器文件客戶端中使用精確定義的路由。

希望這可以幫助你。

+0

我看到你在那裏做了什麼!我修改了一下你的解決方案,以適應我的情況。這很奇怪,因爲我檢查的每個資源都省略了小數點。然後我意識到這只是變成了一個正則表達式... 我用過:''/ path /([_]?[a-zA-Z0-9] *)*'' 因爲我只想匹配alnums(和一個可選的前導下劃線)謝謝,你幫了我一大堆! – Clover 2014-12-06 03:14:10

+0

你確定你的第二個陳述嗎?如果這個流行病在啓動,那麼在他們有機會被細粒度的路線看到之前,它不會抓住一切嗎?我以爲Meteor.startup在router.js之前運行? – Clover 2014-12-06 03:20:34

+0

@Clover不,我不確定第二個陳述。我所知道的是,當我的glob(或可選)路由不在啓動時,它在包之前的路由中運行。tmeasday建議在啓動時放置博客/可選路線以防止該行爲。看到這個問題#:https://github.com/EventedMind/iron-router/issues/1007 – 2014-12-06 11:38:41