2011-09-23 65 views
2

我正在嘗試關注此tutorialrails 3和PDFkit

當我將.pdf添加到我的網址時,它什麼都不做。我的控制器有:

respond_to :html, :pdf. 

我的mime類型已被聲明。

我想這太:

respond_to do |format| 
    format.html 
    format.pdf { 
    html = render_to_string(:layout => false , :action => "www.google.fr") 
    kit = PDFKit.new(html) 
    send_data(kit.to_pdf, :filename => "candidats.pdf", :type => 'application/pdf') 
    return # to avoid double render call 
    } 
end 

,但它不工作,我不明白的錯誤。我的瀏覽器一直在等待localhost,但沒有任何反應。

那麼我該如何嘗試使用pdfkit呢?

編輯2:

根據我的rails的日誌,rails成功地呈現了HTML。我在.log中看到了這一點,rails不會將它發送到webrick或我的瀏覽器。而且我的瀏覽器一直在等待,並且沒有發生任何事情。我在這裏只有很少的照片。

編輯3:我的webrick服務器似乎無法響應其他請求,一旦他開始獲得我的url的.pdf版本,有什麼想法?

編輯4:

我用的導軌3.1,wkhtmltopdf 0.9.5(Windows安裝程序)和pdfkit 0.5.2

+0

抱歉,無法幫助您解決問題,但感謝您向我推薦pdfkit!一直以爲蝦對它來說是'好'的。 –

+0

您發佈的代碼與您鏈接的教程中顯示的代碼之間存在相當大的不匹配。你確定你正在學習這個教程嗎? –

回答

6

我發現了一種更好的方法來訪問我的.pdf網址,即使在開發模式下。

# Enable threaded mode 
config.threadsafe! 

# Code is not reloaded between requests 
#config.cache_classes = true 

Config.cache_classes是一個評論,因爲我有一些問題,當它不是。即使使用rails 3.1,這種pdfkit的工作方式也很奇妙。但是,您不會在請求之間重新加載代碼。

這不是一個真正的問題,因爲你首先在你的html上工作,並且你切換配置,以便檢查pdf結果。這樣您就不必擔心生產數據庫。

+0

將此設置置於開發模式可以完成這項工作,但是如何在生產環境中使用它(您是否使用了heroku?)。如果我在生產中設置了「config.threadsafe!」標誌,我的工作就會超時。 – Tonys

+0

我沒有使用heroku。它在生產中完美地適用於我。 (但我在當地仍然)。這可能會幫助你:http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku。我沒有嘗試過。 – perello

3

由於另一個堆棧溢出的答案我的解決方案的一部分。

這工作:

html = '<html><body>Toto de combats</body></html>' 
@pdf = PDFKit.new(html) 

send_data @pdf.to_pdf, :filename => "whatever.pdf", 
        :type => "application/pdf", 
        :disposition => "attachement" 

可以更換attachement通過inline,所以PDF顯示在您的瀏覽器。

在我談到的堆棧溢出答案(我不記得鏈接)時,.to_pdf丟失,但是是強制性的。否則,PDF閱讀器無法識別它。

我試圖讓這個工作與.pdf網址。

編輯3:

我的.pdf網址問題已解決。與軌道3.1的知名問題,但谷歌無法找到它們。

解釋:explanation

解決方法(還沒有tryied)。 workaround