2011-09-08 4 views
0

는 다음 경로가 정당하고 해결하는 것으로 가정합니다 (당신이 말할 수없는 경우)예기치 않은 경로를 어떻게 처리합니까?

http://test.local/wizards/home 
http://test.local/wizards/wizardfest2012/dates 
http://test.local/dragons/ 
http://test.local/dragons/blog/stop-slaying-us 
http://test.local/ 

이이 블로그를 포함하는 CMS, 그래서 슬러그의 사용자에 의해 생성 될 수있다. 예약 된 네임 스페이스 (예 : 관리자)를 먼저 처리 할 경로가 있습니다.

사용자 생성 경로가 Page 컨트롤러로 라우팅되어야한다고 가정합니다. 그러나 실제로는 routes.rb에 줄을 추가하는 것이 효율적이라고 생각하지 않습니다. 그럼 내 질문은 모델의 정확한 정보를 얻기 위해 매개 변수의 첫 번째 부분 (이 경우 wizardsdragons)을 처리하는 방법입니다.

여기 내 아이디어 중 하나입니다 - (어떻게 든) 분할 다시 슬러그 (의 첫 번째 부분, wizardsdragons 및 관련 컨텐츠를 가져 오기 위해 모델에), (예를 들어 /wizardfest2012/dates를 슬러그의 나머지 부분을 통과

. ?

constraints :camp => /wizards|dragons/ do 
    match ':camp/home' => "pages#home" 
    match ':camp/blog/:title' => "pages#blog" 
    # ...and all the routes with known components 
    match ':camp/*other' => "pages#other" 
end 

당신은을 만들 수 있습니다 :

이 작업을 수행하는 가장 효율적인 방법에 대한 어떤 생각

+0

다른 페이지에 대해 서로 다른 모델을 가진 CMS는 어떤 종류입니까? 그것은 모두 같은 모델입니다. 어쩌면 당신이하려고하는 것에 대해 덜 고안된 예를 게시한다면 어떨까요? – meagar

+0

페이지 컨트롤러, 페이지 모델. 다른 모델이 어디서 왔는지는 확실하지 않습니다. – userrrrr

+0

드래곤/마법사를 "모델"에서 분리하는 것에 대한 자신의 말로 말입니다. – meagar

답변

0

나는 당신이 달성하고자하는,하지만 어쩌면이 당신이 원하는 무엇인지 이해하고 있는지 확실하지 않다 before_filterparams[:camp]을 인식하고 필요한 모델 또는 필요한 것을 준비합니다.

other 동작의 문자열은 "wizardfest2012/dates"이고, params[:other]입니다. 나는 그것이 당신이 필요로했던 것이 었길 바랍니다.

"Rails Routing from the Outside In" 가이드는 이미 읽은 경우가 아니면 읽을 가치가 있습니다.