使用全球化的蜻蜓

时间:2012-06-12 07:59:49

标签: ruby-on-rails dragonfly-gem globalize3

我正在尝试在我的模型中使用image_uid属性,这样我就能拥有不同语言的不同图像。我正在使用globalize3和dragonfly。

问题在于根本不起作用。它通常上传西班牙语图像(这是我的应用程序中的默认语言环境),但它不适用于其他语言环境。我没有得到任何错误或痕迹,它只是不起作用。

模型非常简单:

image_accessor :image  
translates :image_uid

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

:image_uid是识别图像的唯一ID,因此不适合翻译。但是如果存在:image_name属性,Dragonfly会将其用作文件名。

如果您希望为每种语言设置不同的图像,例如插入文本,则必须注意名称或更准确地说网址始终不同,例如您可以将区域设置附加到网址:?locale=en,或将文件命名为translation.en.jpg。要指定名称,您可以使用辅助方法@model.image.name.basename.ext

如果您只想更改文件名并且始终使用相同的图像,则需要使用URL重写引擎并在缓存之前删除文件名。否则,将创建相同图像的不需要的副本,并浪费您的磁盘空间和处理能力。

使用rack-rewriterack-cache宝石,它看起来像这样:

require 'dragonfly/rails/images'

Rails.application.middleware.insert_before(Rack::Cache, Rack::Rewrite) do
  rewrite %r{/media/([^/]+)/[^?]*(.*)}, '/media/$1$2'
end