Rails Wicked_PDF ActiveStorage

我正在使用crono gem在Cronjob的Rails 6应用程序中导出PDF。这本身就可以很好地工作,我的样式也可以应用到表格上,等等:

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

但是在cronjob中生成的PDF中,出现以下两个错误:

如果将image_tag保留在视图中,则会得到:

无法将图像解析为URL:#的未定义方法'polymorphic_url'

如果我尝试使用wicked_pdf_image_tag而不是普通的image_tag帮助器,则会出现以下错误:

没有activeStorage :: Attached :: One到String的隐式转换

所以我要么需要正确的URL(首先我必须下载我认为的图像),要么我需要activeStorage Image作为字符串。

我从GitHub存储库中尝试了一些“解决方案”或更好的解决方法,但它似乎对我不起作用(也许我做错了事,不确定)。

如果我在资产文件夹中使用图像的常规路径,则它可以正常工作,但是我始终需要在配置中设置的图像。

这个问题有解决方案吗?

kao10000 回答:Rails Wicked_PDF ActiveStorage

自己使用wicked_pdf_image_tag修复了该问题,并编写了一个帮助程序函数,将请求的内容放入资产管道中。

本文链接:https://www.f2er.com/2940107.html

大家都在问