2009-12-17 2 views
1

이것은 아마도 디자인이나 사용법에 관한 질문 일 것이지만 주요 문제는 Rails 2.3.4와 함께 Prawn 플러그인을 사용하고 결과 PDF 객체에 액세스하여 파일로 렌더링하는 것입니다.Prawn & Prawnto for Rails PDF 생성 사용하기

시나리오는 기본적으로;

  • respond_to 블록 설정
  • 텍스트를 렌더링하는 코드를 볼 수있는 컨트롤러는 PDF로 등 그래픽

같습니다 같은 : 고객 컨트롤러에서

def show  
    @customer = Customer.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @customer } 
     format.pdf { render :layout => false } 
end 

고객보기에서

pdf.text "Hello World" 
    pdf.text "Customer is #{@customer.name}" 

PDF 파일이 생성 될 때 예상대로 /customers/1.pdf에 대한 응답으로 PDF 파일을 생성하므로 제대로 작동합니다.

다른 요구 사항 중 하나는 pdf를 파일로 렌더링하고 서버에 복사본을 저장하는 것입니다. 새우는 다음과 같은 방법을 제공합니다. pdf.render_file {path_tofile}

이제보기 코드에이 코드를 포함하면 물론 파일을 서버에 저장할 수 있습니다. 그러나 나는 컨트롤러와 관련하여 로직과 관련되어 있으므로이를 관리하고 싶습니다.

첫 번째 시도였다

def show  
    @customer = Customer.find(params[:id]) 
    @pdf = Prawn::Document.new() 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @customer } 
     format.pdf { render :layout => false } 
     pdf.render_file {path_to_file} 
end 

고객보기

pdf.text "Hello World" 
    pdf.text "Customer is #{@customer.name}" 

문제 에서 이러한 시도의 문제는 PDF 렌더링되지 않는 것입니다. Controller 인스턴스 변수가 Prawnto Plugin pdf 변수와 충돌하고있는 것 같습니다. 그러나 PDF 변수를 변경해도 작동하지 않았습니다. 제안 사항이 있으십니까?

답변

3

이것은 내 레일 앱에 새우를 사용하는 방법입니다. http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html - 전혀 사용하지 않습니다.

nginx를 사용하지 않으면 X-Accel-Redirect 항목을 무시할 수 있습니다. 정보에 대한의 http://wiki.github.com/sandal/prawn/using-prawn-in-rails

+0

제임스, 감사 :

또는, 새우 핵심 개발자들 중 또 다른 하나는 함께이 가이드를 걸었다. 두 기사 모두 다른 접근 방식에 대해 좋은 균형을 제공합니다. –