Rails 5上传和显示图像

时间:2017-01-20 15:28:20

标签: reactjs carrierwave ruby-on-rails-5 rmagick

我正在编写一个应用程序,允许用户在图像上添加过滤器(RMagick)。使用carriervawe保存并上传新图像,但在重新加载页面之前它不可用。你知道如何在不重新加载或重定向的情况下上传和显示图像吗?

1 个答案:

答案 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 %>