Как отобразить изображение временного файла в представлениях с помощью Rails Active Storage - PullRequest
1 голос
/ 11 апреля 2020

В моем приложении rails 6 я использую активное хранилище для загрузки файлов в облачный сервис. У меня есть функция, где я хотел бы просмотреть форму перед ее отправкой. Это также требует предварительного просмотра загруженного изображения, которое все еще является временным файлом, перед его отправкой. Я настраиваю предварительный просмотр при создании. html .erb. Вот как я пытался предварительно просмотреть временный файл изображения при создании. html .erb, но он не работает.

    <%= image_tag params[:company][:logo].path %>

Так выглядит модель моей компании

class Company < ApplicationRecord
  belongs_to :user
  has_one_attached :logo
end

Как мне отобразить временное изображение в моих представлениях?

1 Ответ

0 голосов
/ 11 апреля 2020

Я думаю, что если вы еще не отправили форму, она еще не была загружена.

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

Это было бы что-то вроде этого:

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();
    
    reader.onload = function(e) {
      $('#blah').attr('src', e.target.result);
    }
    
    reader.readAsDataURL(input.files[0]); // convert to base64 string
  }
}

$("#imgInp").change(function() {
  readURL(this);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form runat="server">
  <input type='file' id="imgInp" />
  <img id="blah" src="#" alt="your image" />
</form>

Посмотрите на этот вопрос, чтобы увидеть более подробную информацию: Предварительный просмотр изображения перед его загрузкой .

...