Обновление вопроса скрепки / изменение изображения - PullRequest
0 голосов
/ 14 марта 2011

Извините, я использую скрепку. поэтому, когда я прикрепляю файл, отличный от изображения (когда я не загружаю jpeg, gif или png пример zip), отображается эта ошибка:

* Photo C:/Users/MAXIMI~1/AppData/Local/Temp/stream4556-0.rar is not recognized by the 'identify' command.
* Photo C:/Users/MAXIMI~1/AppData/Local/Temp/stream4556-0.rar is not recognized by the 'identify' command.
* Photo C:/Users/MAXIMI~1/AppData/Local/Temp/stream4556-0.rar is not recognized by the 'identify' command.

Какой путь дерева локали для этой ошибки? или путь дерева локали для ошибки скрепки.

ПРИМЕЧАНИЕ: я говорю о локали i18n (перевод)

спасибо заранее

1 Ответ

1 голос
/ 14 марта 2011

Я не знаю о пути перевода i18n для этого, но если вы не хотите, чтобы пользователи загружали файлы, отличные от изображений, вы должны использовать validates_attachment_content_type валидатор, который дает вам скрепка:

validates_attachment_content_type :attachment, /^image.*/, :message => "Your error message"

Что будет генерировать нормальную ошибку для пользователя вместо загадочной ImageMagick.В качестве альтернативы, если вы хотите, чтобы пользователи могли загружать файлы любого типа, но стилизовать изображения определенным образом, вы можете решить вашу проблему следующим образом:

has_attached_file :attachment, :styles => {:thumbnail => ["89x67!", :jpg]}
before_post_process :image?

def image?
  !!(attachment_content_type =~ /^image.*/)
end

Это позволит сделать так, чтобы все загружаемые изображения загружалисьтакже создаст миниатюру размером 89x67, но если это не тип изображения, то пропустит обработку, потому что image? вернет false, а post_process не будет выполнено (но файл все равно будет загружен).

Это добавляет преимущество, заключающееся в том, что вы можете сказать asset.image? позже в представлении или чем-то подобном и решить, следует ли отображать его в теге image_tag или как прямую ссылку (например, только).

...