我正在将 Rails 应用程序从 2.3 升级到 3.2,但我遇到了回形针问题。我的应用程序之前使用 paperclip v2.3.5,现在我使用 Rails 3.0.20 和 paperclip v3.3.1
当我尝试将头像上传到 S3 时出现问题。看起来回形针在发送到 S3 之前会转义路径,但是当我请求特定样式的 url 时,该 url 使用路径的未转义版本,这会导致 S3 出现“NoSuchKey”错误(更像是404 未找到)
在我的模型中,我有
Paperclip.interpolates :last_modified do |attachment, style|
attachment.instance.updated_at.to_i
end
:path => "folder/:id/:style.:extension?:last_modified",
:url => ":s3_domain_url",
所以我的应用程序的旧版本使用 S3 中的 url,例如:
http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789
但现在,每次我上传头像时,S3 都会像这样存储 url:
http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png%3F123456789
并向我的模型询问缩略图样式的 url,将返回:
http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789
S3 找不到。
我知道这似乎是一个很容易解决的问题,但我主要担心的是,生产应用程序有很多用户有很多图片,更新他们的所有图像是一项微妙的任务,手动转义问号并不是解决方案.
最佳答案
我刚刚想出了如何解决与此类似的问题。有一个新的 escape_url
选项。也许尝试将其设置为false
?
:path => "folder/:id/:style.:extension?:last_modified",
:url => ":s3_domain_url",
:escape_url => false
关于ruby-on-rails - Paperclip 2.3.5 到 3.3.1 导致 url 与路径不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15332833/