2012-11-26 101 views
0

我試圖設置保持請求格式的重定向。但是,在某些情況下,格式沒有指定,我也需要說明。Rails 3與標記匹配的路由

我覺得格式是路徑的一部分,所以在第一次我把它像這樣...

match 'v:api/*path', :to => redirect("/%{path}") 

但是,格式不請求的一部分。因此,如果指定了格式,則將其更改爲此將有效。

match 'v:api/*path', :to => redirect("/%{path}.%{format}") 

的缺點是在某些情況下,未指定格式,這將導致一個錯誤,因爲它不能在格式相匹配。

所以我的問題是...什麼是創建這個catchall的正確方法?

意圖是,如果指定了版本號,該版本的路由不存在,它應該轉到根路由,而不指定版本。

回答

0

好吧,我想我已經知道了。被預先警告,雖然它很醜...

match '/v:api/*path', to: redirect { |params, request| 
    if params[:format] 
    "/#{params[:path]}.#{params[:format]}" 
    else 
    "/#{params[:path]}" 
    end 
}