0

我正在使用 Carrierwave 和 S3 来允许人们上传图像,并且图像 URL 显示为“ https://myapp.s3.amazonaws.com/image/53/98ccfeca46.jpg ”。

我想做两件事之一。

  1. 我只想显示“/image/53/98ccfeca46.jpg”

或 2. 使用 CName 将 URL 重命名为不显示“s3.amazonaws.com”,以便图像 URL 为 https://myapp.com/image/53/98ccfeca46.jpg

我怎样才能实现这些?是否可以在 .com 之后立即剪切图像 URL?我正在使用 <%= link_to xyz.image % > 来显示 URL。

4

2 回答 2

0

您可以创建一个帮助方法来显示 url,并使用 string sub 来切断 url 的第一部分。

因此,在您的助手文件夹中,在相应模型的助手中,您可能具有类似的功能

def show_url(url)
  return url.sub("https://myapp.s3.amazonaws.com", "")
end

然后在您的助手中,您将拥有<%= link_to show_url(xyz.image) %>

或者确实是类似的东西,但使用正则表达式

def show_url(url)
  return url.match(/.com(.+)/)[1]
end
于 2013-03-18T04:56:00.210 回答
0

如果您使用的是carrierwave,则可以调用.path以检索图像的路径。我在本地尝试过,效果很好,但我不确定它是否可以在生产中使用。尝试这个:

<%= link_to xyz.image.path %>

或者,您可以使用 CloudFront 为您的 S3 文件提供服务,这允许您将一堆自定义 CNAME 添加到您的分配中,这样您就可以拥有assets.myapp.com/xyz.jpg

于 2013-03-18T04:56:52.963 回答