2013-02-01 64 views
0

我正在使用PDFKit和它的Middlware將HTML呈現爲PDF,但當我嘗試訪問本地主機時仍然存在TypeError:3000/booklets/1.pdfPDFKit,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 

environnment.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 
+0

該錯誤似乎來自render_to_string調用。你有沒有堆棧跟蹤?此外,我建議你嘗試在調試模式下運行你的Rails服務器(rails s --debugger),並嘗試遵循代碼流。這裏是一個鏈接,讓您開始調試rails應用程序:http://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-ruby-debug –

回答

0

的問題是執行路徑你指定。我只是在自己的機器上覆制了這個問題(Ubuntu 12.04),並且我通過不使用wkhtmltopdf的gem install來修復它,它增加了一些wkhtmltopdf版本,它不起作用。

1)在這裏尋找如何安裝wkhtmltopdf(非寶石版) https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF

2)從你的寶石文件

3.刪除 'wkhtmltopdf')通過執行查找wkhtmltopdf可執行'哪個wkhtmltopdf'。使用exe_path聲明中返回的路徑。

4)不知道,如果這一步的問題,但讓我感動:

PDFKit.configure做|配置| config.wkhtmltopdf = {:exe_path => 「#{PATH}」 端

進入配置/初始化/ pdfkit.rb

  • 也通過 '寶石卸載wkhtmltopdf'
除去寶石
相關問題