문제

이것은 아마도 설계 또는 사용법 질문이지만 주요 문제는 Rails 2.3.4와 함께 새우 플러그인을 사용하고 결과 PDF 객체에 액세스하여 파일로 렌더링하는 것입니다.

시나리오는 기본적으로;

  • 응답 _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가 렌더링되지 않는다는 것입니다. 컨트롤러 인스턴스 변수가 새우 플러그인과 충돌하고 있다고 의심했습니다. pdf 변하기 쉬운. 그러나 PDF 변수를 변경하더라도 작동하지 않았습니다. 제안이 있습니까?

도움이 되었습니까?

해결책

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

nginx를 사용하지 않는 한 x-accel-sredirect 물건을 무시할 수 있습니다.

또는 새우 핵심 개발자 중 하나 가이 안내서를 구성했습니다. http://wiki.github.com/sandal/prawn/using-prawn-in-rails

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top