Метод вспомогательного Rails не работает в PDF при отправке в виде вложения

Привет, я создал PDF-конверсию в моем приложении rails, используя Prawn, и он работает нормально. Теперь я отправляю этот PDF во вложении электронной почты. Теперь проблема в том, что я могу отправить вложение PDF, если я не использую какой-либо вспомогательный метод, но когда я использую свой метод format_currency в файле PDf, это дает ошибку в методе 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 ответ

Решение

Я исправил эту проблему другим способом, я создал новый метод 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
Другие вопросы по тегам