2014-11-22 3 views
0

도메인 요청을 가져 와서 컨트롤러의 인덱스 작업으로 라우팅하려고합니다.요청에 따라 레일스 리디렉션

도메인은 데이터베이스에 @site.host으로 저장됩니다. 사이트는 @ site.controller를 통해 컨트롤러에 지정됩니다.
애플리케이션 컨트롤러는 호스트

@site ||= if match = request.host.match(/.*?([^.]+\.[^.]+\.[^.]+$)/) 
    domain = match[1] 
    Site.find_by_host(domain) 
end || Site.find(:first) 

를 추출하지만 다음의 실패 :

if request.url.split('?').first == ("https://" + @site.host) 
    redirect_to :controller => @site.controller, :action => 'index' 
end 
+0

이 물건을 수동으로 연결할 필요는 없습니다. 'request.protocol','request.host','request.url','request.port','request.host_with_port','request.domain','request.subdomain'을 확인하십시오. –

+0

이것은 도움이되었습니다. 그러나 db 값과의 비교를 수행하기 위해 도메인 전에 모든 것을 제거해야했습니다. – Jerome

답변

0

용액은 요청에 비교

따라서 리다이렉트되는 데이터베이스에서 생성 된 세션 값 경유
r_host = session[:host] + "/" 
r_host_n = session[:host] 
if request.url.split("//").last == (r_host || r_host_n) 
    redirect_to :controller => session[:controller], :action => 'index' 
end