2012-06-17 9 views
20

W produkcji (Heroku), otrzymuję następujący błąd:actionView :: Template :: Error (nie skompilowane):

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 

Używam Rails 3.2.6, w tym actionpack 3.2 0,6 i pomyślałem, że miał tę poprawkę dotyczącą tego problemu: https://github.com/rails/rails/commit/6bb86e1f3f7f9e11ee1c056d8742125173ecbce1

próbowałem to również: "ActionView::Template::Error (isn't precompiled)" raised on "image_tag nil"

Zasadniczo, tak długo, jak jeden z obrazów z tej strony nie istnieją, to rzuca ten błąd. Jeśli wgrasz obrazy, działa dobrze. Jakieś pomysły?

Dzięki, --Mark

+0

wydaje się, że poprawka dotyczy tylko '' "' not 'zero' – lulalala

Odpowiedz

46

Zakładam, że używasz czegoś podobnego CarrierWave obsługiwać przesyłanie plików? Możesz określić domyślny obsługi obrazu w swojej klasie Udostępniający:

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 

Wyjście to będzie domyślny obraz zamiast próbować uzyskać dostęp do nieistniejącego pliku o nazwie „” w rurociągu aktywów.

+0

Czy to rozwiązało problem? – cman77

+3

Cześć Jamon, rozwiązał problem. Dzięki. – Ben

+0

rozwiązuje problem z wyświetlaniem, jednak zrywa on z formularzem carrierwave_direct, ponieważ klucz polityki został nadpisany przez default_url i jest odrzucany przez amazon s3. Więc zamiast dostarczać default_url po prostu sprawdziłem, czy obraz istnieje przed wyświetleniem go w widoku – Homan