我们最近将我们网站上的产品名称从“手镯”更改为“腕带”,并且需要保留旧路线以用于搜索引擎优化目的。
基本上,这些路线
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}" }
输入网址: 本地主机:3000 /产品/手镯/系列-1 /小紫
输出网址: 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"}
所以它似乎无法识别第二个斜杠'/'或其他东西。任何想法?
答案 0 :(得分:9)
我遇到了同样的情况,对我有用:
match "/products/bracelets/:name/:name2" => redirect {|params, request| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" }
我已经把两个agruments送进了街区。
答案 1 :(得分:3)
您可以在Rails 5中执行此操作。
match '/products/bracelets/:name/:name2', to: "/products/wristbands/%{name}/%{name2}"