2012-05-04 1 views
0

, 다음과 같은 경로 고려 :싱글 레일 코드베이스, 두 개의 서버, 두 개의 라우팅 범위 네임 스페이스/관리 기능을 가진 레일 응용 프로그램에서

namespace :admin do 
    root :to => 'home#index' 
    [.. resources cut here..] 
end 

get 'etc/:etc' => 'etc#etc' 
[.. other top level routes cut..] 

내가 같은 레일이 개 별도의 서버에 코드베이스 배포하고 싶었다면, 프론트 엔드 .com은 여전히 ​​최상위 경로 'etc/: etc'를 보게됩니다.

하지만 관리자 전용 서버에 동일한 코드베이스를 배포하려는 경우 요청이 http://backend.com 일 뿐이고 http://backend.com/admin을 입력하거나 사용하지 않아도 최상위 수준으로 인계하는 관리자가 있어야합니다.

.htaccess 다시 쓰기를 시도 할 때 관리자 네임 스페이스 코드 내에서 URL 생성 문제와 더 이상 제대로로드되지 않는 애셋이 실행되었습니다.

이것은 가치가없는 것입니까?

답변

1

물론 루트 문을 조건으로 할 수 있습니다.

namespace :admin do 
    root :to => 'admin#index' 
    ... 
end 
if SOMETHING 
    root :to => "admin#index" 
end 

는 (I이 예제 대신 HomeController의 AdminController을 사용했다.)

사용자는 http://backend.com/를 입력 할 수 있지만, 일부 지점에서/관리자는 브라우저의 URL 표시 줄에 나타날 수 있습니다.

SOMETHING은 호스트 이름 또는 ENV에 대한 테스트 일 수 있습니다. vhost 설정에서 ENV를 설정할 수 있습니다.

+0

최상위 수준에서 관리자 네임 스페이스로 전달하는 방법을 알고 있습니까? 만약 그렇다면; root : to => 'admin :: admin # index'또는 비슷한 것? – daed

+0

제 추측은 "admin/admin # index"입니다. –

+0

사실 루트로 나타납니다 : to => 'admin :: Home # index'(admin 네임 스페이스, 홈 컨트롤러 용)! 당신의 도움을 주셔서 감사합니다. 나는 이것이 지금 해결 된 문제라고 생각한다. – daed

관련 문제