2012-10-16 28 views
4

我们最近将我们网站上的产品名称从'bracelets'更改为'wristbands',并且需要保留旧的路线以实现SEO目的。Ruby on Rails重定向如何在路径文件中传递参数

从本质上讲,这些路线

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 /小紫色

输出URL:升ocalhost:3000 /产品/腕带
错误消息:无效的产品:系列1
(所以匹配工作,但重定向没有)

如果我改变了比赛检查PARAMS这样的:

我得到如下:

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

所以看起来它是不承认的第二个斜杠“/”什么的。有任何想法吗?

+0

你能解释一下它是如何与你已经尝试过什么工作的权利吗? – oldergod

+0

我添加了一些细节,谢谢,有什么想法? – ruevaughn

回答

7

我是在同样的情况,并且对我的作品:

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

我已经通过了两项agruments成块。

+0

看起来我们想出了大致相同的解决方案,但是在我的情况下,我不需要传入请求(不使用它),并且删除名称和名称2上的.pluralize为我工作。 – ruevaughn

1

为此,您可以在滑轨5

match '/products/bracelets/:name/:name2', to: "/products/wristbands/%{name}/%{name2}" 
相关问题