bogdanrada
12/18/2015 - 11:28 AM

order_pdf.rb

module Modules
  class OrderPdf
    include ActionView::Rendering

    def initialize(order)
      @order = order
      @view = ActionView::Base.new(ActionController::Base.view_paths, {})
      @view.extend(ApplicationHelper)
      @view.extend(AbstractController::Rendering)
      @view.extend(Rails.application.routes.url_helpers)

      @save_path = Rails.root.join('public','filename.pdf')
    end

    def save
      File.open(@save_path, 'wb') do |file|
        file << rendered_pdf
      end
    end

    private

    def rendered_pdf
      WickedPdf.new.pdf_from_string(rendered_view)
    end

    def rendered_view
      @view.render_to_string(template: 'orders/show.pdf.erb')
    end

  end
end