未找到资产管道中的图像

时间:2013-08-20 10:11:15

标签: ruby-on-rails ruby asset-pipeline prawn assets

我已经看到了许多密切的问题,但未能找到解决方案来解决我的问题。我使用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失败,而且即使我尝试使用内联图像来发送电子邮件。

请帮助,我正在撕开我的头发!

补充:服务于公共工程 - 但这不是我的首选解决方案。

2 个答案:

答案 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')}"