2009-06-26 3 views
1

오전 모두 안녕하세요 ...레일 라우팅 질문 : 루트에서 직접 굼벵이/퍼머 링크 매핑?

일반 라우팅 Quesiton 여기 ... 내 응용 프로그램의 사용자에 대해 이와 비슷한 경로를 얻으려고 현재 작업 중입니다.

http://www.example.com/이름

이 다음 따라서 나는 내 루트 파일에 다음 한의 usersControllers 번호 쇼에 매핑합니다.

map.connect '/ : 퍼머': 컨트롤러 => "사용자": 행동 => "쇼"

내가 다음에 의해 사용자를 찾기 위해 show 액션있어 param의 permalink. 그래서 작동하지만 ....

내가 겪고있는 문제는 다른 모든 정의되지 않은 경로가 userController # show로 전송된다는 것입니다. 404의 & 다른 이름없는 라우트 그래서 저는이 문제에 대해 올바른 컨벤션으로 가고 있다고 생각하지 않습니다. 내 솔루션은 문제를 해결하는 위의 다른 명명 된 경로를 추가하는 것이지만 나에게는 취약한 것처럼 보입니다. 이 잘못 생각하고 있니?

더 나은 해결책이 무엇인가요? 나는 구글을 광산으로 대답 할 것이지만 나는 이것을 토론을 위해 버릴 것이라고 생각했다. 아이디어?

답변

1

당신이 올바르게하고 있습니다. 레일 경로는 맨 위가 높은 우선 순위에서 맨 아래가 낮은 우선 순위로 이동합니다. 사용자는 작업이 맨 아래에 표시되어야 함을 보여줍니다. 퍼머 링크가 사용자와 일치하지 않으면 적절한 404가 생성되는지 확인하십시오.

+0

감사합니다. Ben, 감사합니다. 나는 이것을 해결했다고 생각한다. "퍼머 링크"네임 스페이스와 위에 나열된 다른 모든 기존 URL을 더 높은 우선 순위로 정의했습니다. 지금 테스트 중 ... –

1

사용자 이름이 사이트의 다른 URL과 동일한 사용자를 얻으면 어떻게 될까요? 이것은 일어날 때까지 기다리는 데 문제가있는 것처럼 보입니다.

그냥 http://www.example.com/user/username

에 모든 사용자 이름을 기반으로 URL의 "사용자"네임 스페이스를 만들이 방법을 변경합니다.

+0

Zepplock, 그래, 그걸 고려하고 있었어. 하지만 "루트"네임 스페이스 바로 뒤에 자신의 프로필이있는 URL 모양이 정말 마음에 들어요. 사용자가 기존 URL과 일치하는 이름을 만들지 못하도록하거나, 대신 자신의 네임 스페이스 (예 : www.example.com/pages/ ....)에 "정적"URL을 더 추가하지 않도록 유효성을 검사합니다. 팁을 가져 주셔서 감사합니다! –

+0

/user/username이 귀찮습니다. 사용자 이름을 다른 컨트롤러 경로와 동일하게 추가하거나 제한하십시오. 최악의 경우, 사용자 경로가 우선 순위가 낮은 경로이므로 사용자가 액세스 할 수 없다는 것입니다. 심지어 일부 데이터 규칙을 적용하여 해결할 수도 있습니다. –