我正在编写一个应用程序,允许用户在图像上添加过滤器(RMagick)。使用carriervawe保存并上传新图像,但在重新加载页面之前它不可用。你知道如何在不重新加载或重定向的情况下上传和显示图像吗?
答案 0 :(得分:0)
你有几个选择来解决这个问题。
我认为处理问题的一个好方法是:
我发现https://github.com/lardawge/carrierwave_backgrounder对于这样的事情是一个非常方便的宝石,它将处理回调并在图像处理完毕后更新数据库。
使用此信息,您可以检查图像是否已处理,如果未显示图像,则使用某些javascript轮询数据库,以便在完成时将图像替换为已处理的图像。
# view.html.erb
<% if @image.image_proccessed %>
## Display image
<% else %>
## Display holder image
<script>
function check_if_loaded() {
$.post("<%=j image_processing_url(@image) %>", function(result) {
if(result == false) {
setTimeout(check_if_loaded, 3000); //Try again in 3 seconds
}
else{ // processing is finished, safe to display image
## Replace holder image with display Image
);
}
});
}
$(check_if_loaded);
</script>
<% end %>