Sprawdź, czy masz to w config/environments/production
# Fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true
Zasadniczo Twoim problemem jest to, że Twoje zasoby nie są automatycznie kompilowane.
Więcej informacji tutaj:https://devcenter.heroku.com/articles/rails31_heroku_cedar
Edycja:
Od Rails 3.1 będziemy używać potoku Assets. Oznacza to, że musisz umieścić wszystkie swoje zasoby (obrazy, javascript, css) w app/assets . Przed wersją 3.1 to umieściłoby je w public/**/* .
W trybie programistycznym Rails 3.1 automatycznie skompiluje (zminimalizuje zarówno JS, jak i CSS, w niektórych przypadkach przekształci obrazy do base64, itp.) wszystkie Twoje zasoby, tworząc mały, wersjonowany pakiet.
Aby uzyskać praktyczny przykład, uruchom bundle exec rake assets:precompile w Twoim projekcie. Spójrz na nowy folder w public/ . Możesz go później bezpiecznie usunąć.
W trybie produkcyjnym nie jest to automatyczne. Możesz włączyć automatyczną kompilację zasobów lub ręcznie uruchomić bundle exec rake assets:precompile przed wdrożeniem.
Więcej informacji o potoku zasobówhttps://guides.rubyonrails.org/asset_pipeline.html
Przydatne:https://github.com/dnagir/guard-rails-assets