ruby-on-rails - Paperclip 2.3.5 到 3.3.1 导致 url 与路径不同

标签 ruby-on-rails paperclip rails-3-upgrade

我正在将 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/

相关文章:

ruby-on-rails - rails : best practice to count key values in hash

jquery - 使用回形针中的单选按钮将图像设置为头像

ruby-on-rails - 迁移到 Rails 3 后,未定义方法 `reverse_merge' for nil :NilClass

Mysql2::错误: '6' 中的未知列 'where clause':SELECT

html - 为什么在使用 CSS 框架时,所有表单默认都是 100% 宽度?

ruby-on-rails - 使用 OR 组合多个命名范围

ruby-on-rails - 如何使用 Rails 和 Paperclip 在 Google Cloud Storage 上存储照片?

javascript - DropzoneJS 和 Rails 4 - 差不多了,但我仍然缺少关键部分

ruby-on-rails - 使用 config.filter_parameters 在 rails 3 中自定义过滤参数

ruby-on-rails - GraphQL::Client::DynamicQueryError 期望定义分配给静态常量