2012-12-31 4 views
0

내 레일 애플리케이션에서 어떤 이유로 URL을 원하는 URL로 리디렉션해야합니다.Rails 2에서 URL 리다이렉트

내 구성 설정이 routes.rb 인 방법입니다. URL이 http://example.com/sample입니다 잘 때

map.connect 'sample/:action/:id.:format', :controller => 'test'

  1. 그것은 리디렉션합니다. 그것은 컨트롤러 색인 방법 Test갑니다.

  2. URL이 http://example.com/sample/displayname?id=10 일 때 Test 컨트롤러로 이동하여 displayname 메소드를 검색합니다. 분명히 거기에 없었기 때문에 "undefined"오류 메시지가 나타납니다.
    여기 URL이 (http://example.com/sample/displayname?id=10)인데도 불구하고 Test 컨트롤러의 인덱스 메소드를 사용하기에 충분합니다.

  3. 또한 주소 표시 줄에 URL 마스킹을하고 싶습니다. 주소가 http://example.com/sample/ 인 경우 &을 주소 표시 줄 http://example.com/test으로 리디렉션해야합니다.

어떻게하면 Rails-2 응용 프로그램 (Rails 버전 2.3.9)에서이 작업을 수행 할 수 있습니까?

답변

1

먼저이 작업을 수행하지 않는 것이 좋습니다. 그것은 일이 레일에서 이루어지는 방식의 관습에 어긋나고, 고통으로 이어지는 경향이 있습니다.

(내가 추천하는 바는 URL을 다르게 구조하십시오. 레일을 쉽게 만드는 방법을 사용하면 재미있게 사용할 수 있습니다. 그렇지 않으면 삶이 고통스럽고 고통 스러울 것입니다.)

그러나 정말로 원한다면 레일에서 정규 표현식 경로를 수행 할 수없는 것처럼 보입니다. 네가 할 수있을 거라 생각했는데 네가 할 수있는 흔적은 없어. 그러나 당신이 할 수있는 것은 ...

def method_missing 
    index 
end 

이 동작을 컨트롤러에 넣으십시오. 그것은 당신이 원하는 것을 할 것이지만, 다른 오류를 숨길 수도 있습니다. 어쨌든 내가 너에게 경고하지 않았다고 말하지 마라. 이것은 나쁜 생각처럼 보입니다.

리디렉션의 경우 테스트 컨트롤러에 before_filter이 해당 작업을 수행합니다.

before_filter :redirect_if_wrong_path 

def redirect_if_wrong_path 
    if request.path =~ /\/sample/ 
    redirect_to request.path.sub('/sample', '/test') 
    end 
end 
+0

감사 tehgeekmeister – palani

+0

이 답변은 귀하의 요구를 충족하는 경우, 그것을 받아 들일 수 좋은 형태입니다. 그렇지 않다면 알려주세요. 최선을 다해 도와 드리겠습니다. – tehgeekmeister

+0

URL 마스킹 수행 방법 – palani

관련 문제