2012-06-17 42 views
20

在生产(Heroku的),我收到以下错误:::的ActionView ::模板错误(不预编译):

Started GET "/articles/1" for 50.134.181.231 at 2012-06-17 00:37:35 +0000 
2012-06-17T00:37:35+00:00 app[web.1]: ActionView::Template::Error (isn't precompiled): 
2012-06-17T00:37:35+00:00 heroku[router]: GET wandr.com/articles/1 dyno=web.1 queue=0 wait=0ms service=497ms status=500 bytes=728 
2012-06-17T00:37:35+00:00 app[web.1]: 
2012-06-17T00:37:35+00:00 app[web.1]:  74: = image_tag @article.featured_photo_url(:sm).to_s 
2012-06-17T00:37:35+00:00 app[web.1]:  75: 
2012-06-17T00:37:35+00:00 app[web.1]:  77: = image_tag @article.background_photo_url(:md).to_s 
2012-06-17T00:37:35+00:00 app[web.1]:  76: %p 
2012-06-17T00:37:35+00:00 app[web.1]:  78: %p 
2012-06-17T00:37:35+00:00 app[web.1]:  79: = image_tag @article.cover_photo_url(:md).to_s 
2012-06-17T00:37:35+00:00 app[web.1]:  80: 
2012-06-17T00:37:35+00:00 app[web.1]: app/views/articles/show.html.haml:77:in `_app_views_articles_show_html_haml__1847247375488199378_48105500' 
2012-06-17T00:37:35+00:00 app[web.1]: 
2012-06-17T00:37:35+00:00 app[web.1]: app/controllers/articles_controller.rb:21:in `show' 
2012-06-17T00:37:35+00:00 app[web.1]: 
2012-06-17T00:37:35+00:00 app[web.1]: Processing by ArticlesController#show as HTML 
2012-06-17T00:37:35+00:00 app[web.1]: Rendered articles/show.html.haml within layouts/admin (420.5ms) 
2012-06-17T00:37:35+00:00 app[web.1]: Parameters: {"id"=>"1"} 
2012-06-17T00:37:35+00:00 app[web.1]: Completed 500 Internal Server Error in 486ms 

我运行的Rails 3.2.6,包括ActionPack的3.2 0.6而且我认为他有这个修复此问题:https://github.com/rails/rails/commit/6bb86e1f3f7f9e11ee1c056d8742125173ecbce1

我也试过这样:"ActionView::Template::Error (isn't precompiled)" raised on "image_tag nil"

基本上,只要这个页面上的图像的一个不存在,它抛出这个错误。如果我上传图片,它可以正常工作。有任何想法吗?

感谢, --mark

+0

似乎修复只处理'“”'不'nil' – lulalala

回答

46

我假设你正在使用类似CarrierWave来处理文件上传?您可以在上传类指定一个默认的图像处理程序:

https://github.com/jnicklas/carrierwave#providing-a-default-url

class MyUploader < CarrierWave::Uploader::Base 
    def default_url 
    "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    end 
end 

这将输出的默认图像,而不是试图访问称为不存在的文件“”在资产管道。

+0

这是否解决了这个问题? – cman77

+3

嗨Jamon,它解决了我的问题。谢谢。 – Ben

+0

它解决了显示问题,但它破坏了carrierwave_direct形式,因为策略密钥被default_url覆盖并被amazon s3拒绝。因此,我没有提供default_url,而是在显示视图之前检查图像是否存在 – Homan