2010-02-26 6 views
1

동일한 레일즈 응용 프로그램의 도메인 이름을 기반으로보기 형식을 변경할 수있는 방법이 있는지 알고 싶습니다.도메인 이름을 기준으로보기 형식을 변경하는 방법

  • www.domain.com => respond_to
  • api.domain.com => respond_to format.xml 또는 모든

    감사

format.json format.html 예 :

당신의 도움을 위해서

+0

확실히 아파치 설정을 조정할 수 있습니다. – vava

답변

5

그렇습니다. 컨트롤러에 before_filter를 사용하고 값에 따라 response.format을 설정하십시오.

class Controller < ActionController::Base 

    before_filter :adapt_response_format 

    protected 

    def adapt_response_format 
     response.format = case request.host 
     when "xml.foo.com" then :xml 
     else     :html 
    end 

end 
+0

굉장! 대단히 감사합니다! – jjmartres

0

는 여기에 귀하의 문제가 무엇인지 내가 추측하고 대안 방법입니다.

클라이언트가 원하는 형식에 따라 Accept 헤더를 application/xml 또는 application/json으로 설정하도록 요청하지 않는 이유는 무엇입니까? 기본적으로 웹 브라우저를 지원하기 위해 html을 제공 할 수 있습니다.

이렇게하면 두 개의 서로 다른 호스트를 가질 필요가 없습니다.

+0

콘텐츠 협상 ?! 당신은 화가 났습니까, 대렐!? 나는 농담한다, 나는 농담한다. ;) – Mike

+0

@Mike 알고 있겠지만 의도 한대로 HTTP 기능을 사용하는 것이 좋지 않은 것 같습니다. –

+0

다른 호스트를 사용할 때의 장단점은 무엇입니까? 많은 사이트에서 api 하위 도메인 인 api.domain.com에서 해당 API를 구현합니다. 일부 이벤트는 정적 컨텐츠를 static.domain.com에 배치합니다. – berto77

관련 문제