【问题标题】:Paperclip S3 image path issue回形针 S3 图像路径问题
【发布时间】:2012-07-07 18:51:07
【问题描述】:

我刚刚从 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 => "/system/images/:id/:style/:basename.:extension",但结果是这个网址:http://s3.amazonaws.com/photoramblr/images/5/thumb_large/image.jpg

对如何正确设置有什么想法吗?

更新:嗯,我仍然不明白它是如何工作的,但我通过将文件移动到它正在查找的位置来“修复”这个问题。

【问题讨论】:

    标签: amazon-s3 paperclip ruby-on-rails-3.2


    【解决方案1】:

    尝试添加一个路径参数来替换 url 参数,并在存储桶名称下指定存储文件的路径,并且 URL 将从存储桶和提供的路径构建。这是paperclip s3 docs 的链接以获取更多详细信息。如果您提供一个 url 参数,它会被视为相对于您的“应用程序/公共”。这就解释了为什么你得到的图像路径加倍“app/public”。 Ryan Bate 的paperclip tutorial 也解释了这种行为。 在您的情况下,您的代码将如下所示;

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

    您生成的链接将是(我假设您的存储桶名称是链接中的 photorambler); s3.amazonaws.com/photorambler/app/public/system/images/5/thumb_large/image.jpg

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2016-07-20
      相关资源
      最近更新 更多