您好我已经使用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>
使用此代码,如果我不使用辅助方法,我可以成功发送附件,但我需要使用该方法。
答案 0 :(得分: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