質問

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

シナリオは基本的に次のとおりです。

  • Reply_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 をファイルにレンダリングし、コピーをサーバーに保存することです。Prawn は次のメソッドを提供します。pdf.render_file {path_tofile}

したがって、これを View コードに含めると、もちろんファイルをサーバーに保存できます。ただし、これはビュー自体ではなくロジックに関連しているため、コントローラーで管理したいと考えています。

最初の試みは次のとおりです。

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 がレンダリングされないことです。コントローラーのインスタンス変数が Prawnto プラグインと衝突しているのではないかと思いました pdf 変数。しかし、PDF 変数を変更しても機能しませんでした。助言がありますか ?

役に立ちましたか?

解決

Rails アプリで prawn を使用する方法は次のとおりです。 http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html ・エビは一切使用しておりません。

nginx を使用しない限り、X-Accel-Redirect に関するものは無視してかまいません。

あるいは、別の prawn core 開発者がこのガイドをまとめています。 http://wiki.github.com/sandal/prawn/using-prawn-in-rails

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top