ruby-on-rails-3.1
  • sass
  • asset-pipeline
  • production
  • wicked-pdf
  • 2011-10-06 12 views 5 likes 
    5

    SASSで開発中にwicked_pdfを使用しています。私はこのヘルパーを経由して、他の.sass.scssファイルのためのいくつかのimportルールを含む単一.scssファイルを含めています:wicked_pdf + productionのアセットパイプライン+ sassインポート

    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 
    

    しかし、アプリがまだ見つからないインポートしたファイルを探し生産に切り替えます。

    私は、上記.scssファイルを取り上げるために、単一のrequireルールを含むproduction.rb(config.assets.precompile += %w(pdf.css))で事前コンパイルする2番目のマニフェストファイルを追加しました。このファイルはうまくコンパイルされていますが、ヘルパーは本番環境で適切なファイルを選択せず​​、インポートされた.sassファイルを読み込むように見えます。

    これを解決する方法を経験したことがありますか? PDFを作成するには絶対パスが必要です。このため、この作業は少し難しくなります。

    答えて

    8

    私は開発と生産に携わっている邪悪なpdfを持っています。これは私のwicked_pdfコンフィグレーションの中核である:私はWickedPdfHelperを更新しました

    (初期化子/ wicked_pdf.rbからロード)

    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 
    

    その後、githubのユーザーアンティからwicked_pdf pull requestに基づいてアプリ/資産/スタイルシートで/pdf.css私はいくつかSASSスタイルシートが必要です。

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

    (あなたが設定/中初期化子か何かを変更している場合、あなたが変更に引っ張るためにあなたのレールのアプリを再起動する必要がありますことを覚えておいてください)

    2

    私はこの記事を次のところで書いています:http://anlek.com/2011/09/wicked_pdf-working-in-rails-3-1/

    これは、フィリップのソリューションに少し変わっています。

    関連する問題