使用routes.rb中的格式重定向路由

时间:2013-12-23 12:08:31

标签: ruby-on-rails ruby-on-rails-3 redirect

我想将请求重定向到另一个网址。

目标网址具有以下路线:

get 'conversion_tracker/:website_url', controller: 'conversion_trackers',
action: 'show', website_url: /.*/, defaults: {format: :json}

注意格式。它接受网站网址作为参数。即foo.com。这会导致重定向中的问题,因为路由不再知道它应该将foo.com视为单个参数。我猜它会将com作为单个参数进行检查。

这是我现在的重定向代码:

get 'conversion_tracker/:website_url', to: redirect {|params, req|
"/api/extern/conversion_tracker/%{website_url}?access_token=#{params[:access_token]}"}

然后我收到此错误:

bad URI(is not URI?): /api/extern/conversion_tracker/%{website_url}.html?access_token=

如果我在浏览器中查看我的网址,重定向网址是正确的:

http://localhost:3000/api/conversion_tracker/foo.com?access_token=b97b7064c4e41f226027c6cd715569d9

这似乎是格式问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

我在尝试重定向图片时遇到了类似的问题,尝试这样的事情......

get 'conversion_tracker/:website_url.:website_dom', 
    constraints: { website_url: /.+/, website_dom: /(com|net|org)/ },
    to: redirect {|params, req| "/api/extern/conversion_tracker/%{website_url}.%{website_dom}?access_token=#{params[:access_token]}"}