3

一部のデータを処理して結果の PDF を作成するアプリで PDF 生成を実行しようとしています。私はPDFKitを使用しているので、コントローラーにいる場合は問題ないHTMLビューを作成するだけで済みますが、Sidekiqを使用して処理をバックグラウンドスレッドにプッシュしたいと考えています。

使おうと思っていたrender_to_stringのですがControllerの一部なのでSidekiqでは使えません。

これを行う方法はありますか?私はSidekiqを使い続けたいと思っていますが、そうでない場合は、コントローラー内ですべてを行う必要があると思いますか?

4

2 に答える 2

5

OK、私は別のアプローチに行きました。

ここで説明するように、ワーカークラスから直接呼び出される抽象コントローラーを作成しましたhttp://www.whatastruggle.com/generating-pdfs-in-background

とにかくありがとう

編集

リンクが死んでいるように見えるので、うまくいったことを要約すると:

新しいコントローラーを作成します。これがレンダリング コントローラーになります

render_controller.rb

class RenderingController < AbstractController::Base
  include AbstractController::Rendering
  include ActionView::Layouts
  include AbstractController::Helpers
  include AbstractController::Translation
  include AbstractController::AssetPaths
  include Rails.application.routes.url_helpers
  include WickedPdf::PdfHelper

  self.view_paths = 'app/views'
end

その後、必要な場所で使用する

rc = RenderingController.new
rc.render_to_string(template: 'template/name', locals: { local: value })

Rails 5 以降を使用している場合、コントローラーの外部でのレンダリングが有効になっているため、これは不要になっていることに注意してください。代わりに、次のことができます。

ApplicationController.render :index

詳細はこちら

于 2013-06-09T19:11:00.163 に答える
0

コントローラーで render_to_string を実行し、返された HTML を変数に格納し、HTML を sidekiq ジョブに渡すことができなかったのはなぜですか?

于 2013-11-28T17:39:55.570 に答える