2012-09-11 3 views
2

일부 기존 URL을 리디렉션하려고하는 Rails 2.3 응용 프로그램에서 멈추었습니다. 저는 RoR을 처음 사용하고 3 가지 방법을 더 잘 알고 있으므로이 문제를 해결하는 데 어려움이 있습니다.레일에서 301 리디렉션에 매개 변수 전달 2.3

그래서 : 는 http://siteurl.com/foo/:foo_id 내가이 있기 때문에 가까운 것 같아요 http://siteurl.com/foo/:foo_id/foo_items

로 이동 http://siteurl.com/foo/foo_id/foo_items하지만 :foo_id 매개 변수를 전달하지 않습니다. 실제로 매개 변수를 출력합니다.

도움이나 의견을 보내 주시면 감사하겠습니다. 내 routes.rb 내 리디렉션 컨트롤러에서

map.connect '/foo/:foo_id', 
     :controller => 'redirect', 
     :action => :redirectoldfoo, 
     :monkey_tag => ':foo_id' 

에서

는 : :foo_id 당신이 어쨌든 사용하고있는 모든 때문에

def redirectoldfoo 
    redirect_to "/auctions/#{params[:monkey_tag]}/catalog_items" 
    end 

답변

1

당신은 전혀 :monkey_tag 필요가 없습니다. 귀하의 예제에서 당신은 당신이 모두 /foo/:foo_id/foo_items 다음 /auctions/:foo_id/catalog_items로 리디렉션하려고했던 것으로 나타났다 것을

map.connect '/foo/:foo_id', 
     :controller => 'redirect', 
     :action => :redirectoldfoo 

    def redirectoldfoo 
    redirect_to "/auctions/#{params[:foo_id]}/catalog_items" 
    end 

참고. 두 번째 코드가 실제 코드에 더 가깝다고 가정 했으므로 그 코드를 그대로 두었습니다.

+0

A +. 나는 항상 복잡해졌습니다 – jahrichie

+0

제가 파티에 늦었다는 것을 알지만, http://www.siteurl.com을 http://siteurl.com으로 만들 때 어떻게 작동합니까? 이것은 제가 고쳐야 할 오래된 Rails 프로젝트에 큰 도움이 될 것입니다. – KDP

+0

안녕하세요 @ KDP. 가능한 경우 웹 서버에서 처리해야하지만 Rails에서도 처리 할 수 ​​있습니다. 어느 쪽이든이 사이트는 serverfault.com뿐만 아니라이 사이트에 대한 많은 답변으로 잘 여행 한 곳입니다. – jdl