Ruby on Rails重定向如何在路径文件中传递params

我们最近将我们网站上的产品名称从“手镯”更改为“腕带”,并且需要保留旧的路线以用于搜索引擎优化目的。

基本上,这些路线

www.hostname.com/products/bracelets/series-1/
www.hostname.com/products/bracelets/series-1/small-purple

应该路由到

www.hostname.com/products/wristbands/series-1/
www.hostname.com/products/wristbands/series-1/small-purple

我正在阅读这里的教程http://guides.rubyonrails.org/routing.html#redirection ,看起来我将使用块语法,但我仍然不确定如何正确地进行路由。 我也想了解更多关于路线文件的信息,所以任何信息都会很棒。 提前致谢

match "/bracelets/:name" => redirect {|params| "/wristbands/#{params[:name]}" } 

编辑:

好吧,我已经玩了一段时间,这就是它如何与我尝试过的一起工作

 match "/products/bracelets/:name/:name2" => redirect {|params| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" } 

输入url: localhost:3000 / products / bracelets / series-1 / small-purple

输出url: localhost:3000 / products / wristbands
错误消息:无效的产品:series-1
(所以匹配工作,但重定向没有)

如果我更改匹配以检查这样的参数:

 match "/products/balance-bracelets/:name/:name2" => redirect {|params| "/products/wristbands/#{params.inspect}" } 

我得到以下内容:

  /products/wristbands/{:name=>"series-1", :name2=>"small-purple"} 

所以它似乎没有识别第二个斜杠’/’或其他东西。 有任何想法吗?

我情况相同,对我有用:

 match "/products/bracelets/:name/:name2" => redirect {|params, request| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" } 

我把两个agruments传给了这个区块。

你可以在Rails 5中做到这一点。

 match '/products/bracelets/:name/:name2', to: "/products/wristbands/%{name}/%{name2}" 
Interesting Posts