Spec-Zone.ru › Ruby on Rails 5.2

модуль ActiveStorage::Blob::Representable

Публичные методы экземпляров

preview(transformations) Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 56
def preview(transformations)
  if previewable?
    ActiveStorage::Preview.new(self, transformations)
  else
    raise ActiveStorage::UnpreviewableError
  end
end

Возвращает экземпляр ActiveStorage::Preview с набором transformations. Предварительный просмотр — это изображение, сгенерированное из файла, который не является изображением. Active Storage поставляется со встроенными просмотриками для видео и PDF-документов. Просмотрщик видео извлекает первый кадр из видео, а просмотрщик PDF извлекает первую страницу из PDF-документа.

blob.preview(resize: "100x100").processed.service_url

Избегайте обработки предварительных просмотров синхронно в представлениях. Вместо этого используйте ссылку на действие контроллера, которое обрабатывает их по требованию. Active Storage предоставляет один, но вы можете создать свой собственный (например, если вам нужна аутентификация). Вот как использовать встроенную версию:

<%= image_tag video.preview(resize: "100x100") %>

Этот метод вызывает ActiveStorage::UnpreviewableError, если ни один просмотрщик не поддерживает получаемый файл. Чтобы определить, поддерживает ли какой-либо просмотрщик файл, вызовите #previewable?.

previewable?() Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 65
def previewable?
  ActiveStorage.previewers.any? { |klass| klass.accept?(self) }
end

Возвращает true, если какой-либо зарегистрированный просмотрщик поддерживает файл. По умолчанию это будет true для видео и PDF-документов.

representable?() Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 90
def representable?
  variable? || previewable?
end

Возвращает true, если файл является переменным или поддерживает предварительный просмотр.

representation(transformations) Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 78
def representation(transformations)
  case
  when previewable?
    preview transformations
  when variable?
    variant transformations
  else
    raise ActiveStorage::UnrepresentableError
  end
end

Возвращает ActiveStorage::Preview для файла, поддерживающего предварительный просмотр, или ActiveStorage::Variant для переменного файла изображения.

blob.representation(resize: "100x100").processed.service_url

Вызывает ActiveStorage::UnrepresentableError, если получаемый файл не является ни переменным, ни поддерживающим предварительный просмотр. Используйте #representable? для определения, поддерживает ли файл представление.

См. #preview и #variant для получения дополнительной информации.

variable?() Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 37
def variable?
  ActiveStorage.variable_content_types.include?(content_type)
end

Возвращает true, если ImageMagick может преобразовать файл (его тип содержимого находится в ActiveStorage.variable_content_types).

variant(transformations) Показать исходный код
# File activestorage/app/models/active_storage/blob/representable.rb, line 28
def variant(transformations)
  if variable?
    ActiveStorage::Variant.new(self, transformations)
  else
    raise ActiveStorage::InvariableError
  end
end

Возвращает экземпляр ActiveStorage::Variant с набором transformations. Это актуально только для файлов изображений и позволяет преобразовывать любые изображения по размеру, цветам и т. д. Пример:

avatar.variant(resize: "100x100").processed.service_url

Это создаст и обработает вариант файла аватара, ограниченный высотой и шириной 100 пикселей. Затем он загрузит этот вариант в службу в соответствии с ключом производного файла и преобразованиями.

Однако часто вы не хотите преобразовывать вариант сразу. А скорее просто ссылаетесь на определенный вариант, который может быть создан контроллером по запросу. Так:

<%= image_tag Current.user.avatar.variant(resize: "100x100") %>

Это создаст URL для этого конкретного файла с этим конкретным вариантом, который ActiveStorage::RepresentationsController затем сможет создать по запросу.

Вызывает ActiveStorage::InvariableError, если ImageMagick не может преобразовать файл. Чтобы определить, является ли файл переменным, вызовите #variable?.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API