我已经看到了许多密切的问题,但未能找到解决方案来解决我的问题。我使用Ruby 1.9.3和Rails 3.2.13。
我正在使用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:在`block in generate_risk_pdf'
哪个对应上面的Rails.env.production?
如果我将URL附加到/assets/logo-print-5b6da7bd4012d953bc1bc749cf934d91.png,则图像文件存在。
如果删除该行,则可以使用(减去徽标)。
请注意,这不仅对Prawn失败,而且即使我尝试使用内联图像来发送电子邮件。
请帮助,我正在撕开我的头发!
补充:服务于公共工程 - 但这不是我的首选解决方案。
答案 0 :(得分:0)
尝试将此添加到: rails.root /配置/环境/ production.rb
config.serve_static_assets = true
config.assets.compile = true
答案 1 :(得分:0)
这两种方法的组合对我有用:
image "#{Rails.root}/app/assets#{ActionController::Base.helpers.asset_path('images/logo-print.png')}"