0

こんにちは、Prawn を使用して Rails アプリケーションで PDF 変換を作成しましたが、正常に動作しています。現在、その PDF を電子メールの添付ファイルで送信しています。問題は、ヘルパー メソッドを使用しない場合に PDF 添付ファイルを送信できることですが、PDF ファイルで format_currency メソッドを使用すると、instance_eval メソッドでエラーが発生します。これが私のコードサンプルです: フォーマット通貨コード:

module ApplicationHelper

def format_currency(amt)
    unit = 'INR'
    country = current_company.country
    if !country.blank? && !country.currency_unicode.blank?
      unit = country.currency_unicode.to_s
    elsif !country.blank? 
      unit = country.currency_code.to_s
    end
    number_to_currency(amt, :unit => unit+" ", :precision=> 2)   
  end 
end 

私のコントローラーコード:

pdf.instance_eval do
      @company = current_company
      @invoice = invoice
      @invoice_line_items = invoice_line_items
      @receipt_vouchers = receipt_vouchers
      eval(template) #this evaluates the template with your variables
    end

私が得たエラーメッセージ:

undefined method `format_currency' for #<Prawn::Document:0x7f89601c2b68>

このコードを使用すると、ヘルパー メソッドを使用しない場合でも添付ファイルを正常に送信できますが、そのメソッドを使用する必要があります。

4

1 に答える 1

0

この問題を別の方法で修正しました。会社のモデルに新しい currency_code メソッドを作成し、それを format_currency ヘルパー メソッドで呼び出しましたが、問題なく動作しています。

def currency_code
  unit = 'INR'
  if !country.blank? && !country.currency_unicode.blank?
      unit = country.currency_unicode.to_s
  elsif !country.blank? 
      unit = country.currency_code.to_s
  end
   unit
end

私の format_currency ヘルパーでそれを使用しました:

def format_currency(amt)
    unit = current_company.currency_code
    number_to_currency(amt, :unit => unit+" ", :precision=> 2)   
  end 

私のコントローラーでは、通貨の変数を追加し、それを私のpdfファイルで使用しました:

 pdf.instance_eval do
      @company = current_company
      @invoice = invoice
      @invoice_line_items = invoice_line_items
      @receipt_vouchers = receipt_vouchers
      @currency = current_company.currency_code # new added variable for currency
      eval(template) #this evaluates the template with your variables
    end
于 2013-01-11T06:46:49.343 に答える