Как я могу показать страницу подтверждения перед сохранением изображения с помощью carrierwave в rails?

#ruby-on-rails #ruby #carrierwave

#ruby-on-rails #ruby #carrierwave

Вопрос:

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

 @topic_picture_uploader = TopicPictureUploader.new
@topic_picture_uploader.cache!(params[:topic_picture])
  

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

Ответ №1:

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

 function readURL(input) {

    if (input.files amp;amp; input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#blah').attr('src', e.target.result);
        }

        reader.readAsDataURL(input.files[0]);
    }
}

$("#imgInp").change(function(){
    readURL(this);
});
and the associated HTML:

<form id="form1" runat="server">
    <input type='file' id="imgInp" />
    <img id="blah" src="#" alt="your image" />
</form>