1

開発中および現在の実稼働サーバーで正常に動作するアプリがあります。

無料のherokuに移動したい(基本設定:1 dyno、1 worker)。

残念ながら、pdf 生成 ( PdfKit を使用) は問題ありませんが、CSS で定義された画像がありません。

私は次のような多くのヒントに従いました。

考え?


回避策を見つけましたが、私はまだより良いオプションを知りたいと思っています:

  • ビューを複製しました。1 つは html 専用で、もう 1 つは pdf 用です。

  • 写真を使用してすべてのcssを削除し、html専用のビューにのみ含まれる別のファイルに入れました

  • 最後に、pdf 専用のビューに css を挿入しました。

    .foo { background-image:url(<%= Rails.root %>/public/images/bar.png) }

非常に醜いですが、うまくいきますので、もっと良かったら教えてください

4

2 に答える 2

0

これはおそらく、CSSでURLを指定する方法に問題があります。私が思い出したように、それらはファイルシステムの絶対パスでなければなりません。あなたのCSSはどのように見えますか?

于 2011-09-02T02:10:52.300 に答える
0

これが私が私のニーズにどのように答えたかです:

  • たった1つのビューファイル

  • たった1つのcssファイル

秘訣は、pdfまたはhtmlを期待して、適切なbase_urlをcssファイルに動的に渡すことでした。

LESSを使用することにしました。DOMで提供するbase-urlを指定すると、Styleはcssを別の方法でコンパイルします。このbase-urlはヘルパーによって生成されます。


これが私のステップです:

  • style.css私をに変更しましたstyle.less

  • 私の見解に追加:

<%= stylesheet_link_tag "style.less", :rel => "stylesheet/less" %>

<script id="base_url" type="text/javascript" data="<%= assets_path %>"></script>

<%= javascript_include_tag "less.min.js" %>
  • 私のヘルパーで:
  def assets_path
    if request.fullpath.include? ".pdf"
      "#{Rails.root.join('public',"images","pictos")}"
    else
      "#{request.protocol}#{request.host_with_port}/images/pictos"
    end
  end
  • そして私の中でstyle.less
@base_url: `document.getElementById('base_url').getAttribute('data')`;

.foo { background-image:~"url(@{base_url}/bar.png)" }
于 2011-09-02T23:18:42.860 に答える