2012-10-16 4 views
4

Google 웹 사이트의 제품 이름을 '팔찌'에서 '손목 밴드'로 변경했으며 기존 경로를 유지해야합니다. 기본적으로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/small-purple

www.hostname.com/products/wristbands/series-1/ 노선 튜토리얼은 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 시도 무엇과 협력하는 방법을 확인 : 로컬 호스트 : 3000/제품/팔찌/시리즈-1/- 작은 보라색

출력 URL : 리터 ocalhost : 3000/제품/팔찌
오류 메시지 : 잘못된 제품 : 시리즈-1
(그래서 경기가 작동하지만, 리디렉션하지 않았다)

이 같은 PARAMS을 검사 할 경기를 변경하는 경우 :

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

나는 다음과 같은 얻을 :

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

그래서 두 번째 슬래시 '/'또는 무언가를 인식하지 못합니다 나타납니다. 어떤 아이디어? 난

+0

당신이 설명 할 수 레일에서이 작업을 수행 할 수 있습니다? – oldergod

+0

감사합니다. 어떤 아이디어라도 추가 했습니까? – ruevaughn

답변

7

이 같은 상황에 있었고 그것은 나를 위해 작동 : 나는 블록에 두 agruments을 통과 한

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

. 당신이 시도한 것과 지금 작업하는 방법을

+0

우리가 대략 동일한 솔루션을 생각해 낸 것처럼 보입니다. 그러나 제 경우에는 요청을 (패스워드를 사용하지 않고) 제거하고 이름과 이름을 모두 제거하여 둘을 사용할 필요가 없었습니다 .2 나를 위해 일했습니다. – ruevaughn

1

당신은 5

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