由于url编码,URL重写失败

时间:2013-08-20 15:17:45

标签: ruby-on-rails ruby ruby-on-rails-3.2

我最近在我的API项目上实现了版本控制。现在我的api的URL必须以序列/v1/为前缀(正如我目前在v1上)

我不想打破旧电话,所以为了确保透明兼容性,我想重写旧网址。

应将/events/9999/attendees等网址重定向到/v1/events/9999/attendees

我使用以下代码使用rails routes配置文件routes.rb进行设置:

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

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

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

我做错了什么?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以将一个块传递给redirect以指定正确的网址

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