Метод вспомогательного 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