Ruby on rails URI::rails路由重定向上的InvalidURIError

Ruby on rails URI::rails路由重定向上的InvalidURIError,ruby-on-rails,routes,invalid-url,Ruby On Rails,Routes,Invalid Url,在my routes.rb中,我有以下路线: get '/merchandises/:cat/:id' => redirect('/products/%{id}') 此重定向有效,但如果参数id包含某些字符,则会出现如下示例所示的错误: Started GET "/merchandises/perfumes/Drakkar%20Noir%20Eau%20De%20Toilette" for 127.0.0.1 at 2012-03-07 23:21:28 +0100 URI::Inva

在my routes.rb中,我有以下路线:

get '/merchandises/:cat/:id' => redirect('/products/%{id}')
此重定向有效,但如果参数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)

有人能告诉我如何解决这个问题吗?

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

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