5

我在開發中成功使用了wicked_pdf和SASS。我包括一個.scss文件,其中包含了其他.sass.scss文件數import規則,通過這個助手:wicked_pdf + rails'asset pipeline + sass import in production

def wicked_pdf_stylesheet_link_tag(*sources) 
    sources.collect { |source| 
    "<style type='text/css'>#{Rails.application.assets.find_asset("#{source}.css").body}</style>" 
    }.join("\n").gsub(/url\(['"](.+)['"]\)(.+)/,%[url("#{wicked_pdf_image_location("\\1")}")\\2]).html_safe 
end 

但切換到生產應用還是尋找未發現要導入的文件。

我已經添加了第二個清單文件,將在production.rb(config.assets.precompile += %w(pdf.css))中進行預編譯,其中包含一個require規則以提取上述.scss文件。這個文件編譯得很好,但看起來這個幫助程序在生產中沒有選擇正確的文件,並且仍然看起來加載了導入的.sass文件。

有沒有人有經驗如何解決這個問題? PDF的創建需要絕對路徑,這使得這項任務變得更加困難。

回答

8

我有惡作劇的pdf在開發和生產工作。這是我wicked_pdf配置的核心:

我已經更新WickedPdfHelper(從初始化/ wicked_pdf.rb加載)的基礎上從GitHub用戶安蒂

module WickedPdfHelper 
    def wicked_pdf_stylesheet_link_tag(*sources) 
    sources.collect { |source| 
     "<style type='text/css'>#{Rails.application.assets.find_asset(source+".css")}</style>" 
    }.join("\n").html_safe 
    end 

    def wicked_pdf_image_tag(img, options={}) 
    asset = Rails.application.assets.find_asset(img) 
    image_tag "file://#{asset.pathname.to_s}", options 
    end 

    def wicked_pdf_javascript_src_tag(jsfile, options={}) 
    asset = Rails.application.assets.find_asset(jsfile) 
    javascript_include_tag "file://#{asset.pathname.to_s}", options 
    end 

    def wicked_pdf_javascript_include_tag(*sources) 
    sources.collect{ |source| "<script type='text/javascript'>#{Rails.application.assets.find_asset(source+".js")}</script>" }.join("\n").html_safe 
    end 
end 

然後wicked_pdf pull request在app /資產/樣式表/pdf.css我需要一些青菜樣式:

/* ... 
*= require ./_colors 
*= require_directory ./pdf 
*= require_self 
*/ 

(記住,如果你修改配置/初始化或任何東西,你就需要重新啓動您的Rails應用程序中的變化拉)