2013-04-27 4 views
1

Railscast를 기준으로 하위 프로젝트를 설정했습니다 (this). 두 모델은 각각 StateCity이며 데이터 셋에는 :subdomain 필드가 있습니다. 사용자가 :subdomain과 일치하는 하위 도메인을 입력하면 해당 콘텐츠가 표시됩니다.하위 도메인이없는 경우 어떻게 요청을 리디렉션합니까?

State 또는 City 모델에 하위 도메인이없는 경우 어떻게 요청을 리디렉션 할 수 있습니까? 예를 들어 blue.domain.comrails_root으로 리디렉션하려고합니다.

요청 된 도메인이없는 경우 누군가 리디렉션하는 방법에 대한 지침을 제공 할 수 있습니까?

+1

, 우리가 어디 리디렉션을 추가하는 방법을 알 수 있습니다 –

+0

내가 그 세부 사항을 놓친 것 같아요 ... 전 before_filter와 실제로 설정하지 않았다 ... 그게 내가 어떤 종류의 유효성 검사 논리를 추가 할 것인가? –

+1

네, application_controller에서 find_by를 수행 한 다음 리다이렉션을 찾지 못하면 –

답변

2

컨트롤러의 경우 도시 또는 주를 찾은 곳의 before_filter를 추가 한 다음 찾을 수없는 경우 리디렉션 할 수 있습니다. 뭔가 같이 :

before_filter :find_subdomain 

def find_subdomain 
    @city_or_state = City.find_by_subdomain(request.subdomain) || State.find_by_subdomain(request.subdomain) 
    redirect_to root_path(subdomain: false) if @city_or_state.nil? 
end 
+0

'root_path'가 올바르게 응답하지 않는 경우 ->'root_url (subdomain : false)' – 7urkm3n

1

이 할 수있는 또 다른 방법입니다 같은 : 당신이 도시 또는 상태를 찾을 곳 before_filter 컨트롤러를 게시 할 경우

before_filter :find_subdomain 

private 
def find_subdomain 
    @city_or_state = City.find_by_subdomain(request.subdomain) || State.find_by_subdomain(request.subdomain) 
    redirect_to request.domain if @city_or_state.nil? 
end 
관련 문제