我有一个rails 3.1应用程序,用户上传图片。我将它们存储在/ assets / images中,因为这是image_tag寻找的路径,而不是公共/图像。
在开发过程中一切正常但我部署到Heroku并且它给了我这个错误:
ActionView :: Template :: Error(image_name.jpeg未预编译)
处理这种情况的正确方法是什么?有没有办法在上传后编译图像,还是应该将它们存储在其他地方?
答案 0 :(得分:2)
您不得使用Heroku上的文件系统来存储上传内容。
您不应该对上传的图片使用image_path
,因为这假设它正在查看文件系统。如果您使用image_tag
,则必须传递完整的网址,而不仅仅是图片名称。
答案 1 :(得分:1)
您是否使用了carrierwave来上传图片?您可以使用载波将它们存储在亚马逊S3上相当容易。 Carrierwave instructions其他解决方案也可以轻松访问S3存储。
Heroku不允许您在文件系统中存储文件。运行
RAILS_ENV=production bundle exec rake assets:precompile
在本地编译资产,添加到git,然后推送到heroku,但是以后不能通过heroku上的应用程序添加图像。如果您将它们上传到/temp
文件夹,它们会在那里停留一段时间,或直到您重新部署/更新我认为的代码。