【问题标题】:Rails 4.1 Elastic Beanstalk cannot find image urlRails 4.1 Elastic Beanstalk 找不到图片网址
【发布时间】: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')。我在您的网站上尝试了一堆不同的网址,但似乎无法指向它们,所以这可能无法解决您的问题。
  • 感谢您的建议,但两者都不适合我。无论如何感谢您的帮助。
  • 问题已解决,您应该自己回答问题,以便其他人知道您是如何解决的。

标签: ruby-on-rails ruby-on-rails-4 amazon-web-services amazon-s3 amazon-elastic-beanstalk


【解决方案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;
猜你喜欢
  • 2014-07-19
  • 2017-09-14
  • 2017-10-31
  • 2016-05-25
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 2020-12-29
  • 2013-08-24
相关资源
最近更新 更多