Rails 4.1 Elastic Beanstalk 找不到图片网址
Posted
技术标签:
【中文标题】Rails 4.1 Elastic Beanstalk 找不到图片网址【英文标题】:Rails 4.1 Elastic Beanstalk cannot find image url 【发布时间】:2014-08-25 11:17:00 【问题描述】:我已经上传了一个简单的登陆页面到基于 Rails 4.1 的 AWS elastic beanstalk。
问题是现在没有加载图像。
http://localhost/assets/image.png shows me the image.
http://webinsight.co/assets/image.png does not exist.
当我查看 AWS S3 时,图像文件已正确上传到 AWS。
以前有没有人遇到过同样的问题?
我的网站: http://webinsight.co
【问题讨论】:
您说“当我查看 AWS S3 时,图像文件已正确上传”——其中一张图像的地址是什么样的? 正确上传,因为我可以看到 app/assets/images 文件夹中的文件。 Elastic Beanstalk 自动压缩每个 git 提交,因此整个提交文件存储在 1 个 zip 文件中。我可以在这个 zip 文件中看到图像文件。图片网址类似于“localhost/assets/image.png” 您可能不想这样做,但它可以帮助排除故障:您是否尝试过预编译资产?在您的application.rb
文件中设置config.assets.compile = true
。如果这没有帮助 - 您如何尝试显示图像?你在使用助手吗?您是否尝试过更改(如果还没有)您的助手来阅读此内容:image_tag image_path('image.png')
。我在您的网站上尝试了一堆不同的网址,但似乎无法指向它们,所以这可能无法解决您的问题。
感谢您的建议,但两者都不适合我。无论如何感谢您的帮助。
问题已解决,您应该自己回答问题,以便其他人知道您是如何解决的。
【参考方案1】:
这就是我所做的。
我将所有图片路径从“/assets/image.png”更改为
<%= image_tag("image.png") %>
对于背景图像,我将其更改为类似
background: url(image-path('image.png')) no-repeat center center;
然后我进行了资产预编译。
rake assets:precompile RAILS_ENV=production
至于为什么需要这样做,我在某处读到,如果 AWS S3 服务图像未列在 rails 项目的 public/assets/ 文件夹中,则它们存在一些权限问题。
由于 assets:precompile 会自动在公用文件夹中创建这些图像的新实例,因此您在进行更改并动态列出图像路径后不会遇到此问题。
【讨论】:
或者你可以像这样background: image_url('image.png') no-repeat center center;
以上是关于Rails 4.1 Elastic Beanstalk 找不到图片网址的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ruby 2.0、Rails 4.1、nginx 更改 Elastic Beanstalk 的文件大小限制
Elastic Beanstalk 在配置菜单中没有负载均衡器设置
Rails + Elastic Beanstalk + Passenger:更改乘客配置
Elastic beanstalk [Rails] 部署问题 - 无法分配内存