2011-05-06 4 views
1

렌더러를 추가하여 모델 중 하나가 .vcf 형식에 응답 할 수있게하려고합니다. 내가 얻을 /model/123.vcf로 이동하기 때문에 경우에 다음과 같은 코드도 실행되고 있지 않습니다 것처럼레일에 VCF 용 렌더러 추가하기 3

Mime::Type.register 'text/x-vcard', :vcf 
ActionController::Renderers.add :vcf do |object, options| 
    exit! # Testing to see if this even gets called at all... 
end 

것 같다 : 내 initializers 디렉토리에 내 vcf_renderer.rb 파일에 다음 코드를 추가 한 "템플릿이 없습니다" 오류.

누구도 ActionController::Renderers.add 블록이 호출되지 않는 이유를 알고 있습니까?

respond_to :vcf 

def show 

    respond_with(@author) 

end 

답변

6

AuthorsController.rb 렌더러 format.vcf { render :vcf => @object }을 실행 오래된 스타일의 작품처럼 보인다.

respond_with (이제 "누락 템플릿"이 발생 함) add a to_vcf method in the models이 있습니다. show을 시도했지만 작동했습니다 (index의 경우 배열의 경우 to_vcf을 인식하지 못합니다).

# config/initializers/vcf_renderer.rb 
Mime::Type.register 'text/x-vcard', :vcf 
ActionController::Renderers.add :vcf do |object, options| 
    self.content_type ||= 'text/x-vcard' 
    self.response_body = object.respond_to?(:to_vcf) ? object.to_vcf : object 
end 
+0

나는 컨트롤러의 상단에'respond_to : vcf'를 추가했습니다. –

+0

맞아, 보지 못 했어. 새로운 Rails 3.0.7 응용 프로그램에서이 코드는 여기서 작동하며 브라우저에서 카드를 다운로드하라는 메시지를 표시하고 서버가 종료됩니다. – TuteC

+0

3.0.7로 업그레이드했는데 여전히 작동하지 않습니다. 카드를 다운로드하라고 요구하지 않습니다. VCF 템플릿 파일이 누락되었다고 말하면서 제공하고 싶지 않습니다. 그러므로'ActionController :: Renderers.add'. 어떤 제안? –