2011-03-10 4 views
1

현재의 Rails 2 프로젝트에는 몇 가지 리소스가 있습니다. 각각의 리소스는 루트 레벨 퍼머 링크를 통해 액세스 할 수 있어야합니다 (예 : http://domain.com/john을 통해 액세스 할 수있는 그룹 및 액세스 가능한 그룹 http://domain.com/thehunters 경유). 레일즈 3에서는 퍼머 링크가 적절히 경로를 가지도록 조건을 사용할 수 있지만, 레일스 2의 라우팅 조건은 훨씬 제한적이라는 것을 알고 있습니다.다른 컨트롤러에 하나의 경로 맵을 어떻게 만들 수 있습니까?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 내가 생각해 낼 수있는 최선의 방법은 PermalinkController를 가지고 올바른 컨트롤러에서 올바른 액션을 호출하는 것입니다. 그러나 이것은 매우 unDRY, slow, brittle으로 끝납니다.

답변

0

기본적으로 당신이 제안한 것은 다른 컨트롤러로 리 라우트 할 이유가 없다는 것 외에는 수행해야 할 것입니다. "Permalink (영구 링크)"컨트롤러는 params의 변수를 받아 들여 해당 변수를 해석하여 사용할 모델을 결정한 다음 해당 모델에서 사용할 뷰를 결정하고 해당 뷰를 렌더링해야합니다.

+0

불행하게도, if 문으로 구분 된 하나의 컨트롤러 안에있는 다른 컨트롤러의 모든 논리 (우리가 보여주는 모든 동작을 표시하고 중첩 된 리소스의 동작을 포함)를 if 문으로 구분해야합니다. 추악하고 유지하기가 힘들지만 적어도 작동합니다. –

+0

가능한 한 많은 로직을 이동하여 데이터를 가져오고 라우팅하는 컨트롤러 만 사용하십시오. –

1

이것은 모두 나쁜 생각입니다. 어떤 경우이 두 URL은 http://domain.com/users/johnhttp://domain.com/groups/thehunters이어야합니다. 처음에는 두 URL 사이에 차이가 없습니다. thehunters은 다른 사용자 이름 일 수 있습니다. 가능한 한 RESTful이되도록 노력하십시오. URL은 중요하며 쉽게 이해할 수 있어야합니다.

+0

저는 조부모를 대상으로하는 웹 사이트에서 작업하고 있으며 조부모는 RESTful 디자인에 신경 쓰지 않을 것입니다. 사용의. 우리는 이미 그룹 페이지에 접근 할 수 없다는 것에 대해 사용자들에게 불만을 토로했는데, 그 이유는 그룹 페이지 앞에 "/ groups /"를 입력하지 않았기 때문이라고 RESTful은 반드시 사용자 친화적 인 것은 아닙니다. 다른 유형의 페이지는 경로의 루트에서 모두 동일한 네임 스페이스에 있습니다. –

관련 문제