0

Carrierwave と S3 を使用して、人々が画像をアップロードできるようにしています。画像の URL は「https://myapp.s3.amazonaws.com/image/53/98ccfeca46.jpg」として表示されます。

私は2つのことのうちの1つをしたいと思います。

  1. 「/image/53/98ccfeca46.jpg」だけを表示したい

または 2. イメージ URL がhttps://myapp.com/image/53/98ccfeca46.jpgになるように、CName を使用して「s3.amazonaws.com」が表示されないように URL の名前を変更します 。

どうすればこれらを達成できますか? .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 に答える