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] 部署问题 - 无法分配内存

Rails 4 Elastic Beanstalk 部署错误

Elastic Search 不在 Rails 中显示数据