У меня проблема с жемчужиной Rails. Это случается очень редко и кажется совершенно случайным. Когда это происходит, генерируемый PDF-файл содержит весь искаженный текст. Там нет сообщения об ошибке или что-то, только то, что выглядит как PDF с кодом в нем вместо отформатированного текста, который он должен иметь.
Если я пытаюсь восстановить PDF, проблема будет продолжаться, пока я не изменю содержимое PDF-файл (путем изменения значения в поле формы, например, с помощью переключателя Да / Нет или изменения ввода текста в текстовом поле). Затем, когда я снова сгенерирую файл, проблема исчезнет, и PDF будет отформатирован правильно. И если я затем изменю поля формы обратно туда, где они были ранее (когда я получал сообщение об ошибке), я больше не получаю сообщение об ошибке, и оно работает нормально.
Я сохраняю файл в Active Сохраните и зашифруйте его с помощью гема Lockbox, а затем отобразите предварительный просмотр файла в iframe.
Вот мой код:
profile_controller.rb
def generate_preview
@profile = current_user.profile
@profile.generate_file(@profile)
redirect_to profile_preview_path
end
def show_file
@profile = current_user.profile
@file = @profile.file
send_data @file.download, filename: "Profile-#{@profile.user.name}.pdf", type: @file.content_type, :disposition => :inline
end
profile. rb
has_one_attached :file
encrypts_attached :file
def generate_file(profile)
@profile = profile
@pdf_file = ProfilePdf.new(@profile)
io = StringIO.new @pdf_file.render
file.attach(io: io, content_type: "application/pdf", filename: 'Profile.pdf')
file.analyze
end
Предварительный просмотр. html .erb
<div class="col-md iframe-preview-column">
<iframe src=<%= profiles_show_file_path + "#toolbar=0" %> class="iframe-preview" style="border: none;"> </iframe>
</div>
Любая помощь будет принята с благодарностью!