2

Rails3.2プロジェクトとアセットパイプラインでwicked_pdfプラグインを使用しています。pdf.css.erb内で自分の写真を定義したい

レイアウトファイルを利用するためのコントローラーコードは次のとおりです。

    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "Cars.pdf",
        :template => "reports/cars.html.haml",
        :page_size => "A4",
        :layout => "pdf.html",
        :handlers => [:haml]
      end
    end

これが私のpdf.css.erbファイルを含む私のレイアウトファイルです。

!!!
%html
    %head
        = wicked_pdf_stylesheet_link_tag "pdf"
        = csrf_meta_tag
    %body
        .contentbg
            .logo
            .content= yield

最後にこれが私のCSSです

.logo {
    background: wicked_pdf_image_tag "logo.jpg";
    width: 100px;
    height: 80px;
}

これはlogo.jpgを見つけられません。wicked_pdf_image_tag "logo.jpg"行をpdf.html.hamlテンプレートレイアウトファイルに直接配置すると、生成されたpdfにロゴがレンダリングされます。

css.erbファイル内でwicked_pdf_image_tagヘルパーを使用することは可能ですか?

4

1 に答える 1

1

これはcss.erbファイル内では機能しません。これは、最初にerbタグが欠落しているためですが、ほとんどの場合、wicked_pdf_image_tagがそれを次のように拡張するためです。

.logo {
  background: <img src="file://foo/bar/public/images/logo.jpg">;
}

これは有効なCSSではありません。最善の策は、手作業で次のようなものを作成することです。

.logo {
  background: url(<%= Rails.root.join('assets','images','logo.jpg').to_s %>);
}

直接ファイルアクセスパスを使用する理由は、wkhtmltopdfがアセットを取得するためにWebリクエストを行う必要がないため、ロードがより高速になるためです。

于 2012-05-21T16:48:31.987 に答える