1

これはおそらく設計または使用上の質問ですが、主な問題はRails 2.3.4でPrawnプラグインを使用し、結果のPDFオブジェクトにアクセスしてファイルにレンダリングすることです。

シナリオは基本的にです。

  • response_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ファイルを生成します。

他の要件の1つは、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インスタンス変数がPrawntoPlugin変数と衝突しているのではないかと思いましたpdf。しかし、PDF変数を変更しても機能しませんでした。助言がありますか ?

4

1 に答える 1

3

これが私のrailsアプリでエビを使用する方法です:http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html-エビはまったく使用していません。

nginxを使用しない限り、X-Accel-Redirectのものは無視できます。

または、エビのコア開発者の1人がこのガイドをまとめました:http ://wiki.github.com/sandal/prawn/using-prawn-in-rails

于 2009-12-17T10:06:07.600 に答える