嗨,我已经创建了一个PDF转换在我的rails应用程序使用Prawn,它工作得很好。现在我把那个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>
使用这段代码,如果我不使用helper方法,我可以成功发送附件,但我需要使用该方法
我已经以不同的方式修复了这个问题,我已经在我的公司模型中创建了一个新的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