我正在使用paperclip gem来处理一些图像并将它们存储到Amazon S3。每个图像代表人的名字。我想添加对具有unicode字符的名称的支持,但由于paperclip无法上传其名称中带有unicode字符的文件,因此无法使其正常工作。 我不能在上传之前将Ñ更改为N,因为那时我将覆盖用字母N上传的图像。 例如。 两个用户:NUÑO和NUNO。我不能只告诉paperclip将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}
有什么想法吗?
答案 0 :(得分:0)
经过两天的调试,我找到了解决方案。
我从ruby 1.9.2更新到2.0.0,现在一切正常......