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