Rails 6: прикрепленное изображение ActionText не отображается в частичном шаблоне _blob

В настоящее время я работаю над приложением Rails 6, в котором я использую cloduinary для размещения изображений. Имею модель с rich_text_content.

class Question < ApplicationRecord
  belongs_to :user
  has_many :comments, as: :commentable
  has_rich_text :content
end

Когда я добавляю изображение из редактора форматированного текста и пытаюсь отобразить изображение, браузер не отображает прикрепленное изображение.

просмотры / вопросы / show.html.erb

<div class="border-t-2 border-gray-600 text-2xl m-auto w-4/5">
    <div class="h-56 my-8">
      <%= @question.content %>
    </div>
  </div>

Шаблон show.html.erb отображает только текстовое содержимое, а не изображение вложения в @question.content, поэтому, когда есть embeds_blob, _blob.html.erb не отображает изображение.

<figure class="attachment attachment--<%= blob.representable? ? "preview" : "file" %> attachment--<%= blob.filename.extension %>">
  <% if blob.representable? %>
      <div class="max-w-xl mx-auto rounded overflow-hidden shadow-lg">
        <%= cl_image_tag(blob.key, format: :jpg )%>
        <div class="px-6 py-4">
          <figcaption class="attachment__caption">
            <% if caption = blob.try(:caption) %>
              <%= caption %>
            <% else %>
              <div class="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2">
                <span class="attachment__name"><%= blob.filename %></span>
                <span class="attachment__size"><%= number_to_human_size blob.byte_size %></span>
              </div>
            <% end %>
          </figcaption>
        </div>
      </div>
  <% end %>
</figure>

cl_image_tag(blob.key, format: :jpg) должен отображать прикрепленный файл, но это не так, как показано на изображении ниже введите описание изображения здесь

Однако, если бы я все прокомментировал и оставил только следующую строку. <%= cl_image_tag(blob.key, format: :jpg )%>. Изображение отображается без структуры HTML из _blob.html.erb. введите здесь описание изображения

Почему _blob.html.erb не отображает прикрепленное изображение, полученное от Cloudinary?


person Steven Aguilar    schedule 27.03.2020    source источник


Ответы (1)


Как вы, наверное, уже знаете, вызов метода blob.representable? в частичном возвращает false.

Если вы посмотрите исходный код representable?, который, в свою очередь, вызывает _ 4_, вы можете увидеть проверяемые типы содержимого не включают image/heic. Вы можете настроить его для включения, как описано здесь.

config.active_storage.variable_content_types принимает массив строк, указывающих типы контента, которые Active Storage может преобразовать с помощью ImageMagick. По умолчанию %w(image/png image/gif image/jpg image/jpeg image/pjpeg image/tiff image/bmp image/vnd.adobe.photoshop image/vnd.microsoft.icon image/webp)

После включения image/heic и перезапуска приложения изображение должно появиться.

Примечание. Указанные выше ссылки указывают на master ветку rails. Возможно, вы захотите выбрать правильный тег в зависимости от версии рельсов, которую вы используете.

Надеюсь это поможет.

person Arun Kumar Mohan    schedule 28.03.2020