2013-01-08 97 views
2

我在我的一個項目中使用IMGKIT,並且必須使用html選項的css來滿足需求。我注意到,如果樣式表被設定爲如下:(Rails)IMGKIT - 使用html和css導出圖像的問題

kit = IMGKit.new(html, :quality => 50) 
kit.stylesheets << '/path/to/css/file' 

和樣式表具有帶有相對URL(「image.png」),使用kit.to_file出口時,它不產生圖像的背景屬性:

(Rails.root + "public/pngs/" + "image.png") 

請求掛起,如果我們用協議,主機和端口替換後臺url到完整的url,它會很好地導出。

我需要在我的樣式表中包含所有圖像的絕對URL嗎?

我試圖在我的development.rb文件中定義asset_host:

config.action_controller.asset_host = Proc.new { |source| 
    "#{request.protocol}#{request.host_with_port}" 
    } 

它確實更換網址在CSS,如果我檢查瀏覽器,但在通過IMGKIT出口並不產生的靜止圖像。

回答

4

IMGKIT爲任何背景圖片或其他資產重新提供了絕對網址的CSS。 所以,你可以生成動態地跟隨這個鏈接https://coderwall.com/p/exj0ig和一些步驟

A)把你的所有圖像的資產/圖像Rails應用程序

B)安裝寶石「青菜護欄」的文件夾如果沒有安裝https://github.com/rails/sass-rails

C)創建另一個CSS文件名css_file_name.css.sccs.erb

D)把你的所有其他的CSS文件的內容。

e)在css文件中,只需將您的圖像文件名稱如下: background-image:image-url('image.png');

F)資產使用pipline(http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline)爲您的應用程序模式如下命令 運行: (1)發展模式:RAILS_ENV =發展捆綁高管耙資產:預編譯 (2)生產模式:RAILS_ENV =產品包EXEC耙資產:預編譯

G)在你的配置/環境/

(1)在development.rb config.action_controller.asset_host =「本地主機URL即YOUR_LOCALHOST_ADDRES S「

(2)在production.rb config.action_controller。asset_host = 「http://assets.example.com」/ 您的地址/

1H)而在去年涉及與IMGKIT樣式表如下

html_content = "YOUR HTML CONTENT" 
kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/ 
kit.stylesheets << "#{Rails.root}/public/assets/application.css" 
file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/ 
send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/ 

I)重新啓動服務器,並享受!!!!!

[注:後每變動請運行資產pipline命令來獲取這是從.sccs.erb擴展文件所做的最新application.css]

+1

怎麼樣的軌道4,因爲將會有一個指紋application.css你將如何給那條路。更多信息請參閱我的SO問題關於相同http://stackoverflow.com/questions/23736713/how-to-give-fingerprint-css-path-in-production-rails- 4 – Anish