2

我正在使用回形针 gem 处理一些图像并将它们存储到 Amazon S3。每个图像代表一个人的名字。我也想添加对带有 unicode 字符的名称的支持,但由于回形针无法上传名称中带有 unicode 字符的文件,我无法使其工作。我不能在上传之前将 Ñ 更改为 N,因为那样我会覆盖用字母 N 上传的图像。例如。两个用户:NUÑO 和 NUNO。我不能只告诉回形针将 NUÑO.jpg 上传为 NUNO.jpg,因为这会覆盖以前的 NUNO.jpg。

这是我非常标准的生产/登台环境配置:

config.paperclip_defaults = {
  :storage => :s3,
  :url => ':s3_domain_url',
  :path => 'assets/:class/:id/:style.:extension',
  :s3_credentials => {
    :bucket => ENV['AWS_BUCKET'],
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY_ID']
  }
}

这是带有图像附件的相关类:

class NameSpread < ActiveRecord::Base
(...)
  has_attached_file :rendered_image,
    default_url: lambda { |attach| attach.instance.processing_image },
    path: lambda { |attach| attach.instance.save_path },
    styles: { (..) },
    processors: [ :name_spread_processor ],
    default_style: :spread
(...)
end

这是 save_path 方法:

def save_path
  if Rails.env.production? || Rails.env.staging?
    "assets/:class/#{gender}/#{name}/:style.jpg"
  else
    "#{Rails.root}/public/assets/:class/#{gender}/#{name}/:style.jpg"
  end
end

这是搞砸的部分:#{name}

有任何想法吗?

4

1 回答 1

0

经过两天的调试,我找到了解决办法。

我从 ruby​​ 1.9.2 更新到 2.0.0,现在一切正常......

于 2013-10-09T06:06:45.140 回答