如果作为附件发送,Rails helper方法在PDF中不起作用



嗨,我已经创建了一个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

相关内容

  • 没有找到相关文章

最新更新