Ruby on rails 如何将视图上下文传递给ActiveJob后台工作者?

Ruby on rails 如何将视图上下文传递给ActiveJob后台工作者?,ruby-on-rails,ruby,rails-activejob,sucker-punch,Ruby On Rails,Ruby,Rails Activejob,Sucker Punch,我正在尝试将视图\u上下文对象传递给后台工作程序: invoices = current_user.invoices ArchiveInvoicesJob.perform_later(invoices.pluck(:id), view_context) 我明白我不能将ActiveRecord:Relations传递给ActiveJob。这就是为什么我要传递身份证 但是当我试图传递视图\u上下文时,我得到了一个 问题是我需要类中的视图\u上下文来生成一组PDF 如何将其放入其中?您应该能够在后台

我正在尝试将
视图\u上下文
对象传递给后台工作程序:

invoices = current_user.invoices
ArchiveInvoicesJob.perform_later(invoices.pluck(:id), view_context)
我明白我不能将
ActiveRecord:Relations
传递给ActiveJob。这就是为什么我要传递身份证

但是当我试图传递
视图\u上下文时,我得到了一个

问题是我需要类中的
视图\u上下文
来生成一组PDF


如何将其放入其中?

您应该能够在后台作业中打开一个新的视图上下文。您可能不需要将其作为参数传递。@maxpleaner:好的,我只是想知道如何做?您是否尝试从后台作业调用
view\u context
?我认为
view\u context
只是从视图层访问方法的一种方式,而不是你必须“传递”的东西。但是我可能弄错了。@maxpleaner视图上下文与请求绑定,因此它不存在于该上下文之外。有些助手可以在该上下文之外使用,有些则不能。例如,
link\u to
,它填补了当前请求中的大量空白。您不能将整个视图上下文传递给后台作业,因为它是一个非常复杂的大对象,引用了请求、控制器、任何赋值(控制器的实例变量)本地人等等,这意味着序列化是一场噩梦。ActiveJob仅序列化简单对象。