2013-08-20 40 views
2

我最近在我的API项目上实现了版本控制。现在我的api的URL必须以序列/v1/(因为我目前在v1)的前缀为前缀由于URL编码导致URL重写失败

我不想破坏旧的调用,所以为了确保透明兼容性,我想重写旧的url 。

网址像/events/9999/attendees应该被重定向到/v1/events/9999/attendees

我设置了我的轨道路线的配置文件routes.rb用下面的代码:

match "*path", :to => redirect("/#{API_CONFIG['current_version']}/%{path}"), 
:constraints => lambda { |request| true } 

我现在面临的问题是,最终重写的路线似乎是网址编码...(或其他)其实,这是%{path}似乎被打破。然后:

/events/9999/attendees被重定向到/v1/events%2F9999%2Fattendees

我在做什么错?

非常感谢

+0

怎么样'url_encode(路径)' – sircapsalot

回答

2

你可以传递一个块redirect指定正确的URL

match "*path", :to => redirect {|params, request| "/v1/#{params[:path]}"}, :constraints => lambda { |request| true } 
+0

谢谢你,它的工作原理就像一个魅力 – Codii