Rails6 изменяет размер загруженных изображений с помощью Action Text и Active Storage - PullRequest
1 голос
/ 06 февраля 2020

Я обновил свой проект до Rails 6 и теперь использую Action Text в моей модели "Article".

class Article < ApplicationRecord
    has_rich_text :content
end

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

Как изменить размер вложенных изображений и заменить их в прослушивателе "trix-file-accept"?

// app/javascript/trix-editor-overrides.js
window.addEventListener("trix-file-accept", function (event) {
 // ...
})

1 Ответ

2 голосов
/ 06 февраля 2020

Для хранения изображений вы можете прослушать событие trix-attachment-add. Вы можете прикрепить изображения с помощью XMLHttpRequest самостоятельно через пользовательский контроллер и там. Если вы хотите изменить размер вложения перед сохранением, попробуйте использовать, например, minimagi c. Проверьте страницу trix editor . Вместо этого, если вам просто нужно отобразить вложение с измененным размером, Active Storage будет лениво преобразовывать исходный BLOB-объект в указанный формат. Расположенный под app/views/active_storage/blobs/, этот фрагмент автоматически создается Rails при запуске скрипта rails action_text:install. Это вызывается для каждого вложения, которое является частью текста действия, и вы можете изменить размер изображения:

  <!--app/views/active_storage/blobs/_blob.html.erb-->
  <% if blob.representable? %>
    <%= image_tag blob.representation(resize_to_limit:local_assigns[:in_gallery] ? [ 800, 600 ] :[1024, 768 ]) %>
  <% end %>

Подробнее здесь

Обработка вложений в тексте действия в Rails 6

Активная память, преобразующая образы

...