如何在使用carrierwave保存图像之前显示确认页面?

时间:2016-10-13 09:54:30

标签: ruby-on-rails ruby carrierwave

我有一个用户可以上传图片的表单,我正在使用carrierwave来处理它。目前,用户通过填写​​表单并单击提交来发帖。这会将用户带到一个确认页面,在实际创建帖子之前,通过rails验证(包括图像预览)后,所有信息都会再次显示。我需要在实际保存并将其发送到S3之前在此页面上显示图像。

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

我尝试像这样缓存它,但尝试访问任何东西只返回nil。如何在将图像保存到模型之前简单地显示图像?

1 个答案:

答案 0 :(得分:0)

无需提交页面,只需在表单上单击预览按钮,然后单击它即可显示您要显示的数据,并显示提交按钮以完成帖子。请看一下在下面的示例JS代码中:

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]);
    }
}

$("#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>