在rails路由重定向上的URI :: InvalidURIError

Pio*_*ioz 1 routes ruby-on-rails invalid-url

在我的routes.rb我有以下路线:

get '/merchandises/:cat/:id' => redirect('/products/%{id}')
Run Code Online (Sandbox Code Playgroud)

这个重定向工作,但如果param id包含一些字符,我得到的错误就像这个例子:

Started GET "/merchandises/perfumes/Drakkar%20Noir%20Eau%20De%20Toilette" for 127.0.0.1 at 2012-03-07 23:21:28 +0100

URI::InvalidURIError (bad URI(is not URI?): /products/Drakkar Noir Eau De Toilette)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何解决这个问题?

Pio*_*ioz 5

好的,我找到了一个解决方案:

get '/merchandises/:cat/:id' => redirect { |params, req| "/products/#{URI.escape(params[:id])}" }
Run Code Online (Sandbox Code Playgroud)