0

HTMLをPDFとしてレンダリングするためにMiddlwareでPDFKitを使用していますが、localhost:3000/booklets/1.pdfにアクセスしようとするとTypeErrorが発生し続けます

can't convert Hash into String

エラーは BookletsController#show にあると表示されます。これは私の booklets_controller.rb からの抜粋です

  def show
    @booklet = Booklet.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.pdf {
        html = render_to_string(:action => "show.html.erb", :formats => [:html])
        kit = PDFKit.new(html)
        send_data(kit.to_pdf, :filename => "booklet.pdf", :type => 'application/pdf')
      return
      }
    end
  end

環境.rb

# Initialize the rails application
Ziin::Application.initialize!

Mime::Type.register "application/pdf", :pdf

application.rbからの抜粋

require 'pdfkit'
config.middleware.use "PDFKit::Middleware"

PDFKit.configure do |config|
    config.wkhtmltopdf = { :exe_path => '/usr/local/bin/wkhtmltopdf' }
end
4

1 に答える 1

0

問題は、指定したexecパスです。自分のマシン(ubuntu 12.04)で問題を再現し、動作しないバージョンのwkhtmltopdfを追加するwkhtmltopdfのgemインストールを使用しないことで問題を修正しました。

1.)wkhtmltopdf(非gemバージョン)のインストール方法については、こちらを ご覧くださいhttps://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF

2.)gemファイルから「wkhtmltopdf」を削除します

3.)'which wkhtmltopdf'を実行して、wkhtmltopdf実行可能ファイルを見つけます。exe_path宣言で返されるパスを使用します。

4.)この次のステップが重要かどうかはわかりませんが、私は移動しました:

PDFKit.configure do | config | config.wkhtmltopdf = {:exe_path => "#{PATH}" end

config / initializers/pdfkit.rbに

  • また、「gemUninstallwkhtmltopdf」によってgemを削除します
于 2013-02-02T06:50:00.457 に答える