Rails6 使用 Action Text 和 Active Storage 调整上传图片的大小

Rails6 resize uploaded images with Action Text & Active Storage

我已将我的项目升级到 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) {
 // ...
})

要存储图像,您可以监听 trix-attachment-add 事件。您可以通过自定义控制器自己使用 XMLHttpRequest 附加图像,如果您想要在保存前调整附件大小,请尝试使用例如 minimagic. Check 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 中处理操作文本中的附件

Active Storage Transforming Images