0

私は多くの密接な問題を見てきましたが、私の問題を解決するための解決策を見つけることができませんでした. Rails 3.2.13 で Ruby 1.9.3 を使用しています。

私は Prawn を使用して PDF を生成し、ロゴを表示します。ロゴは開発環境では問題なく見つかりますが、Heroku にある本番環境では失敗します。

私のコントローラーには次のものがあります:

def generate_risk_pdf(risk)
    Prawn::Document.new do

      image "#{Rails.root}/app/assets/images/logo-print.png", :scale => 0.75 if Rails.env.development?
      image "#{ActionController::Base.helpers.asset_path('logo-print.png')}", :scale => 0.75 if Rails.env.production?
      move_down 2
      formatted_text [{:text => Exercise Australia", :styles => [:bold], :size => 20}]
      font_size 6
     bounding_box([bounds.right - 150, bounds.bottom], :width => 240, :height => 20) do
        text "Copyright: Exercise Australia, #{Date.today.year}"
      end

   end.render
end

Heroku ログには

ArgumentError (/assets/logo-print-5b6da7bd4012d953bc1bc749cf934d91.png が見つかりません): app/controllers/single_entries_controller.rb:309:in `block in generate_risk_pdf'

上記の Rails.env.production の行に対応するのはどれですか?

URL を /assets/logo-print-5b6da7bd4012d953bc1bc749cf934d91.png に追加すると、画像ファイルが存在します。

その行を削除すると、機能します(ロゴを除く)。

これは Prawn だけでなく、電子メールにインラインで画像を使用しようとした場合でも失敗することに注意してください。

助けてください、私は髪を引き裂いています!

追加: 公共事業からの提供 - しかし、それは私の好みの解決策ではありません.

4

2 に答える 2

0

両方の方法の組み合わせが私のために働いた:

image "#{Rails.root}/app/assets#{ActionController::Base.helpers.asset_path('images/logo-print.png')}"

于 2015-03-08T11:13:34.683 に答える