【问题标题】:is it possible to show only a part of the image URL in rails?是否可以在 rails 中仅显示图像 URL 的一部分?
【发布时间】:2013-03-18 04:46:22
【问题描述】:

我正在使用 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? 我正在使用 来显示 URL。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 amazon-s3 carrierwave


    【解决方案1】:

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

    所以在你的 helpers 文件夹中,在对应模型的 helper 中,你可能有一个类似的函数

    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
    

    【讨论】:

      【解决方案2】:

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

      <%= link_to xyz.image.path %>
      

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

      【讨论】:

      • 谢谢,.path 可以在本地工作。我会在产品中检查一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多