Ruby on rails 3 在sidekiq worker中呈现\u到\u字符串

Ruby on rails 3 在sidekiq worker中呈现\u到\u字符串,ruby-on-rails-3,sidekiq,pdfkit,Ruby On Rails 3,Sidekiq,Pdfkit,我正在尝试在我的应用程序中生成PDF,该程序处理一些数据,然后创建结果的PDF。我使用的是PDFKit,所以需要简单地创建一个HTML视图,如果我在控制器中,这很好,但是我想用Sidekiq将处理推到后台线程中 我原计划使用渲染到字符串,但由于它只是控制器的一部分,我不能在Sidekiq中使用它 有什么办法我可以做到这一点吗?我想试着坚持使用Sidekiq,但如果不行,我想我只能在控制器内完成所有工作。好的,我选择了另一种方法 我已经创建了一个抽象控制器,它直接从worker类调用,如下所述 无

我正在尝试在我的应用程序中生成PDF,该程序处理一些数据,然后创建结果的PDF。我使用的是PDFKit,所以需要简单地创建一个HTML视图,如果我在控制器中,这很好,但是我想用Sidekiq将处理推到后台线程中

我原计划使用
渲染到字符串
,但由于它只是控制器的一部分,我不能在Sidekiq中使用它


有什么办法我可以做到这一点吗?我想试着坚持使用Sidekiq,但如果不行,我想我只能在控制器内完成所有工作。

好的,我选择了另一种方法

我已经创建了一个抽象控制器,它直接从worker类调用,如下所述

无论如何谢谢你

编辑

这一联系似乎已经消失了,所以总结一下有效的方法:

创建一个新控制器,这将是渲染控制器

渲染控制器.rb

注意,如果您使用的是Rails 5+,这不再是必需的,因为它们启用了控制器外部的渲染。相反,您现在只需执行以下操作:

ApplicationController.render :index

更多详细信息可用

为什么不能在控制器中呈现\u to \u字符串,将返回的HTML存储在变量中,将HTML传递到sidekiq作业中?

我本来可以,但render \u to \u string方法花了相当长的时间来处理,我希望请求快速返回,而不是等待它生成HTML。我希望这种情况发生在背景中,这个URL只是进入一个空白页。有没有可能你还在某处?我想做同样的事情。在后台处理某些内容,并希望将结果以PDF格式发送给用户,但无法从工作人员处访问
render\u to\u string
。@Lewlsause抱歉,我再也没有该页面了,但我已更新了答案,以包含解决方案的详细信息。如果您使用的是Rails 5+,那么您现在可以在Rails 5中的框中执行此操作,它不是
ApplicationController.render
,而是
ApplicationController.new.render
rc = RenderingController.new
rc.render_to_string(template: 'template/name', locals: { local: value })
ApplicationController.render :index