Рельсы Wicked_PDF ActiveStorage - PullRequest
       49

Рельсы Wicked_PDF ActiveStorage

0 голосов
/ 11 декабря 2019

Я экспортирую PDF в моем приложении Rails 6 в Cronjob с жемчужиной crono. Это само по себе работает нормально, мои стили применяются к таблице и т. Д .:

def perform
        view = ActionController::Base.new
        view.extend(ApplicationHelper)
        view.extend(Rails.application.routes.url_helpers)
        # include helpers and routes
        view.instance_variable_set("@clinic_image", Configuration.first.image)
        view.instance_variable_set("@meal_triplet_week_vollkost", Meal.this_week_vollkost)
        view.instance_variable_set("@meal_triplet_week_schonkost", Meal.this_week_schonkost)
        view.instance_variable_set("@meal_triplet_week_vegetarisch", Meal.this_week_vegetarisch)
        view.instance_variable_set("@clinic_name", Configuration.first.clinicName)

        pdf = WickedPdf.new.pdf_from_string(
            view.render_to_string('meals/exportMealsCurrentWeek.html.erb', layout: 'pdf_week.html.erb'))

        save_path = Rails.root.join('pdfs','filename.pdf')
        File.open(save_path, 'wb') do |file|
            file << pdf
        end
    end

Моя проблема заключается в следующем:

Когда я вызываю действие для рендеринга PDF из контроллера,ActiveStorage Изображение из моей базы данных отображается без проблем:

<%= image_tag(@clinic_image, size: "400x64", alt: "BDH Klinik Braunfels") %>

@clinic_image определяется из моей базы данных в содержимом по умолчанию для приложения:

if Configuration.first.image.attached?
   @clinic_image = Configuration.first.image 
end

Но в моем PDF, которыйсгенерированный в cronjob, я получаю две следующие ошибки:

Если я сохраню image_tag в представлении, которое я получу:

Невозможно разрешить изображение в URL: undefined метод `polymorphic_url'for # <#: 0x000000000c119c28>

Если я пытаюсь использовать wicked_pdf_image_tag вместо обычного помощника image_tag, я получаю следующую ошибку:

нет неявного преобразованияActiveStorage :: Attached :: One in String

Так что мне либо нужен правильный URL-адрес (где я сначала должен загрузить изображение, я думаю), либо мне нужно изображение ActiveStorage в виде строки.

я пыталсянекоторые «решения» или лучшие обходные пути из репозитория GitHub, но, похоже, он не работает для меня (возможно, я сделал что-то не так, не уверен).

Если я использую обычный путь к изображению в моемпапка assets это * работает, но мне всегда нужно изображение, которое установлено в конфигурации.

Есть ли какое-нибудь решение этой проблемы?

1 Ответ

0 голосов
/ 12 декабря 2019

Исправил это сам с помощью wicked_pdf_image_tag и написал вспомогательную функцию, которая помещает запрошенное в конвейер актива.

...