Kiểm tra xem bạn có cài đặt này trong config / environment / production
# Fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true
Về cơ bản, vấn đề của bạn là nội dung của bạn không được biên dịch tự động.
Thông tin thêm tại đây: http://devcenter.heroku.com/articles/rails31_heroku_cedar
Chỉnh sửa:
Từ Rails 3.1, chúng ta sẽ sử dụng đường dẫn Tài sản. Điều này có nghĩa là bạn cần đặt tất cả nội dung của mình (hình ảnh, javascript, css) trong app/assets
. Trước 3.1 sẽ đặt chúng trong public/**/*
.
Trong chế độ phát triển, Rails 3.1 sẽ tự động biên dịch (rút gọn cả JS và CSS, chuyển đổi hình ảnh thành base64 trong một số trường hợp, v.v.) tất cả nội dung của bạn, tạo một gói nhỏ, có phiên bản.
Đối với một ví dụ thực tế, hãy chạy bundle exec rake assets:precompile
trong dự án của bạn. Hãy xem thư mục mới trong public/
. Bạn có thể xóa nó một cách an toàn sau đó.
Trong chế độ sản xuất, điều này không tự động. Bạn có thể bật tính năng biên dịch tự động nội dung hoặc chạy bundle exec rake assets:precompile
theo cách thủ công trước khi triển khai.
Thông tin thêm về Đường ống tài sản http://guides.rubyonrails.org/asset_pipeline.html
Hữu ích: https://github.com/dnagir/guard-rails-assets