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

时间:2013-01-09 09:36:18

标签: ruby-on-rails-3 pdf

您好我已经使用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>

使用此代码,如果我不使用辅助方法,我可以成功发送附件,但我需要使用该方法。

1 个答案:

答案 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