2014-04-04 3 views
2

설명서를 읽었을 때마다 매번 혼란 스럽습니다. 클래스 메서드 ::respond_to (주로 컨트롤러 상단에서 사용되는)의 주요 목적은 respond_with과 함께 사용하는 것입니다. 그리고 인스턴스 메서드 #respond_to (일반적으로 각 작업의 끝 부분에서)의 목적은 다른 형식에 대해 다른 응답을 제공하는 것입니다.ActionController # respond_to와 ActionController :: respond_to의 차이점을 설명하십시오.

클래스 메소드처럼 보이도록 인스턴스 메소드 버전을 통합 할 수도 있지만 conciceness (respond_to(:html))와 같은 작업 내에서 사용됩니다. 이를위한 사용 사례는 지정되지 않은 형식에 대한 요청을 거부하는 또 다른 목적 인 #respond_to입니다. (나는 그것이 UnspecifiedFormat 예외를 발생 시킨다고 생각한다.)

클래스 메소드도 동일한 기능을 가지고 있는가? 예를 들어, 컨트롤러가 인데이 html로 응답하는 경우 파일 상단에 respond_to(:html)을 입력하면 다른 형식의 요청을 거부 할 수 있습니까? 그 일에 문제가있어, 내가 잘못한 일을하고 있는지, 아니면 그 점에서 인스턴스 메소드와 똑같이 작동하지 않아도되는지 모르겠습니다.

답변

1

그래서 마침내 실험을 실행했지만 아니요, 클래스 메소드 respond_to은 인스턴스 메소드와 같이 지정되지 않은 형식으로 요청을 거부하지 않습니다. 혼란스런 일종의 종류지만, 거기에 당신이 가지고 있습니다. 유효하지 않은 형식 (406 포함)에 대한 요청을 거부하려면 각 컨트롤러의 각 작업 내에서 유효한 형식을 지정해야합니다 (respond_to 인스턴스 메서드 사용)