我正在尝试在我的模型中使用image_uid属性,这样我就能拥有不同语言的不同图像。我正在使用globalize3和dragonfly。
问题在于根本不起作用。它通常上传西班牙语图像(这是我的应用程序中的默认语言环境),但它不适用于其他语言环境。我没有得到任何错误或痕迹,它只是不起作用。
模型非常简单:
image_accessor :image
translates :image_uid
有什么想法吗?
答案 0 :(得分:0)
:image_uid
是识别图像的唯一ID,因此不适合翻译。但是如果存在:image_name
属性,Dragonfly会将其用作文件名。
如果您希望为每种语言设置不同的图像,例如插入文本,则必须注意名称或更准确地说网址始终不同,例如您可以将区域设置附加到网址:?locale=en
,或将文件命名为translation.en.jpg
。要指定名称,您可以使用辅助方法@model.image.name
,.basename
和.ext
。
如果您只想更改文件名并且始终使用相同的图像,则需要使用URL重写引擎并在缓存之前删除文件名。否则,将创建相同图像的不需要的副本,并浪费您的磁盘空间和处理能力。
使用rack-rewrite
和rack-cache
宝石,它看起来像这样:
require 'dragonfly/rails/images'
Rails.application.middleware.insert_before(Rack::Cache, Rack::Rewrite) do
rewrite %r{/media/([^/]+)/[^?]*(.*)}, '/media/$1$2'
end