2012-06-12 6 views
0

Я пытаюсь установить атрибут image_uid в моей модели, чтобы иметь разные изображения с разными языками. Я использую globalize3 и dragonfly.Использование dragonfly with globalize

Проблема в том, что она не работает вообще. Обычно он загружает испанский образ (который является стандартным языковым стандартом в моем приложении), но он не работает с другими локалями. Я не получаю никаких ошибок или следов, это просто не работает.

модель довольно проста:

image_accessor :image 
translates :image_uid 

Любая идея?

ответ

0

:image_uid является идентификатором uniqe для идентификации изображения и поэтому не подходит для перевода. Но если присутствует атрибут :image_name, то Dragonfly использует это как имя файла.

Если вы хотите иметь другое изображение для каждого языка, потому что вы, например, вставляете текст, вы должны следить за тем, чтобы имя или, более точно, URL-адрес всегда был другим, например. вы можете добавить локаль к URL-адресу: ?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