2013-01-23 77 views
0

我們可以在路線圖中使用正則表達式嗎?我正在創建一個簡單的文件瀏覽器。我有這條路線在我/config/routes.js設置:複合js路線正則表達式

map.all('/assets/:folder.:format?', 'assets#index'); 

但該文件夾可以將參數(例如)Images/Logos,所以我很感興趣,如果我可以使用正則表達式之一。

在我ROR的項目,我能夠與路由器:contrains參數的」幫助解決了類似的問題:

match 'applications/:store/:platform/:identifier/:filename' => 'assets#direct_download', 
    :constraints => { 
     :store => /[\w.-]+/, 
     :platform => /[\w.-]+/, 
     :identifier => /[\w.-]+/, 
     :filename => /.+/ 
    } 

我無法找到任何的例子。所以如果有人能爲我澄清這一點,我會很感激。

回答

0

您可以使用此語法:

map.all(new RegExp('^\/assets\/(.*)$'), 'assets#index'); 

然後用它的索引(從0開始 - 整個字符串被忽略,不像preg_match或類似功能)拍攝參數:

// app/controllers/assets_controller.js 
console.log(params[0]); 
+0

好的,你知道嗎,可能有可能有命名參數嗎? – jaromudr

+0

@jaromudr你可以修改'railway-routes' nodejs模塊來解決這個問題。我認爲現在無法處理正則表達式路由的代碼:https://github.com/1602/railway-routes/blob/master/lib/railway_routes.js#L53 – shybovycha