3

所以我一直在尝试解决这个问题一段时间,但我没有这样做。我有一个模型帖子 has_rich_text: body

class Post < ApplicationRecord
  extend FriendlyId
  friendly_id :title, use: :slugged
  has_rich_text :body
  has_rich_text :health_check
  has_one_attached :cover_photo
  has_many :post_tags, dependent: :destroy
  has_many :tags, through: :post_tags

  after_commit :add_default_cover, on: [:create, :update]

  def add_default_cover
    unless cover_photo.attached?
      self.cover_photo.attach(io: File.open(Rails.root.join("app", "assets", "images", "default.png")), filename: 'default.png' , content_type: "image/png")
    end
  end
end

当我附加照片时它工作得很好,但是当我附加一个 gif 时,它会正确上传到编辑/新屏幕,我可以在富文本编辑器中看到 gif 的动画。但是,一旦我提交编辑/新表单,就会创建一个新变体作为图像,这就是显示帖子时使用的内容。当我检查我的存储系统时,我发现了图像和 gif 版本。

有谁知道为什么在提交表单时会发生这种情况?我想上传一个 gif 并在没有活动存储或操作文本更改它的情况下显示它。

4

1 回答 1

3

我有同样的问题。我最终用 JS在客户端破解了它。

我的方法:在带有 GIF/MP4 的页面的“DOMContentLoaded”事件中,我抓取所有动作文本附件,获取它们的 URL,然后对于 GIF,我将静态图像 URL 替换为 GIF URL,对于 MP4,我只需创建一个新<video>元素并为其提供 MP4 URL。它不漂亮,但它有效。

这是我博客上的一个例子。如果您找到更好的答案,请告诉我,这感觉像是应该内置到动作存储/文本中的东西。

于 2020-03-18T00:46:26.990 回答