1

Rails 3.1 から Rails 3.2.6 にアップグレードしたところ、ペーパークリップの写真パスが本番環境で壊れてしまいました。

photo.rb

if Rails.env == "production"
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :url => "/app/public/system/images/:id/:style/:basename.:extension",

結果のパスが次のようになる必要があります。http://s3.amazonaws.com/photoramblr/app/public/system/images/5/thumb_large/image.jpg

しかし、代わりに上記の URL 設定の結果は次のようになります。http://s3.amazonaws.com/photoramblr/app/public/app/public/system/images/5/thumb_large/image.jpg

また、ペーパークリップの URL を に設定しようとしました:url => "/system/images/:id/:style/:basename.:extension"が、その結果、次の URL になりました。http://s3.amazonaws.com/photoramblr/images/5/thumb_large/image.jpg

これを適切に設定する方法について何か考えはありますか?

更新: まあ、私はそれがどのように機能しているのかまだ理解していませんが、ファイルを探していた場所に移動するだけでこれを「修正」しました.

4

1 に答える 1

1

url パラメーターを置き換えるパス パラメーターを追加し、ファイルが保存されるバケット名の下にパスを指定してみてください。URL は、バケットと指定されたパスから構築されます。詳細については、 paperclip s3 ドキュメントへのリンクを次に示し ます。url パラメーターを指定すると、「app/public」に対して相対的に処理されます。これは、画像パスが「app/public」を2倍にする理由を説明しています。Ryan Bate のペーパークリップ チュートリアルでも、この動作について説明しています。あなたの場合、コードは次のようになります。

if Rails.env.production?
  has_attached_file :image,
    :storage => :s3,
    :s3_credentials => S3_CREDENTIALS,
    :path => "app/public/system/images/:id/:style/:basename.:extension",

結果のリンクは次のようになります(バケット名はリンクのフォトランブラーであると想定しています)。s3.amazonaws.com/photorambler/app/public/system/images/5/thumb_large/image.jpg

于 2012-07-16T11:42:25.687 に答える