Rails 6 ...
У меня есть специальный помощник, который отлично работает, когда я указываю браузеру на представление. Но я использую то же представление в другом месте для создания PDF-файла (с помощью render_to_string), который прикрепляется к электронному письму. В этом контексте я получаю ошибку undefined method
.
Вот приложение / views / submissions / show.slim (это React SPA):
= javascript_tag do
| var rawForm = #{raw(@submission.frm.to_json)}
= pdf_stylesheet_pack_tag 'shower'
= pdf_javascript_pack_tag 'shower'
Вот приложение / помощники /pdf_helper.rb
module PdfHelper
def pdf_stylesheet_pack_tag(source)
if running_in_development?
options = { media: "all" }
wds = Webpacker.dev_server
options[:host] = "#{wds.host}:#{wds.port}" unless show_as_html?
stylesheet_pack_tag(source, options)
else
wicked_pdf_stylesheet_pack_tag(source)
end
end
def pdf_javascript_pack_tag(source)
if running_in_development?
options = {}
wds = Webpacker.dev_server
options[:host] = "#{wds.host}:#{wds.port}" unless show_as_html?
javascript_pack_tag(source, options)
else
wicked_pdf_javascript_pack_tag(source)
end
end
def show_as_html?
params[:debug].present?
end
end
(Этот помощник устраняет проблему с гемом Wicked PDF.)
Вот app / mailers / notifications_mailer.rb
class NotificationsMailer < ApplicationMailer
def new_submission(submission, email)
@submission = submission
@frm = submission.frm
attachments["submission-#{submission.id}.pdf"] = WickedPdf.new.pdf_from_string(
render_to_string(
'submissions/show',
layout: 'pdf',
locals: {:@submission => submission}
)
)
mail to: email
end
end
Когда почтовая программа пытается отправить электронное письмо. Я вижу эту ошибку в журналах:
[ActiveJob] [ActionMailer::MailDeliveryJob] [f8ce8ecc-2ae5-447d-85f0-bd46bf3c8b20] Rendered submissions/show.slim within layouts/pdf (Duration: 39.5ms | Allocations: 12324)
[ActiveJob] [ActionMailer::MailDeliveryJob] [f8ce8ecc-2ae5-447d-85f0-bd46bf3c8b20] NotificationsMailer#new_submission: processed outbound mail in 444.2ms
[ActiveJob] [ActionMailer::MailDeliveryJob] [f8ce8ecc-2ae5-447d-85f0-bd46bf3c8b20] Error performing ActionMailer::MailDeliveryJob (Job ID: f8ce8ecc-2ae5-447d-85f0-bd46bf3c8b20) from Async(mailers) in 444.67ms: ActionView::Template::Error (undefined method `pdf_javascript_pack_tag' for #<#<Class:0x00007f8c728defb8>:0x00007f8c728dcc68>):
/Users/emerson/Code/consent/app/views/submissions/show.slim:6:in `_app_views_submissions_show_slim__295365913496948297_70120585776840'
Что мне не хватает?