2013-08-26 43 views
1

我使用gem'jquery-fileupload-rails'和'carrierwave_backgrounder'gem with sidekiq。如何在下载完成后添加重新加载页面?如何在上传图片后重新加载页面

的问题是,下载背景和页面重新加载立即,而不是当图像加载

fileupload.js

$(function() { 
     $('#new_photo').fileupload({ 
      acceptFileTypes: '/(\.|\/)(gif|jpe?g|png)$/i', 
      dataType: 'html', 
      add: function (e, data) { 
       data.context = $('#loading').css({display:"block"}).appendTo('#photos'); 
       data.submit(); 
      }, 
      done: function (e, data) { 
       data.context.text('Upload finished.'); 
       location.reload(); 
      } 
     }); 
    }); 

image_upload.html.erb

<div class="upload" id="new_photo"> 
    <%= form_for([@project, current_user.photos.new]) do |f| %> 
     <%= file_field_tag :image, multiple: true, name: "photo[image]" %> 
     <%= link_to 'Save', @project, :class => 'btn btn-success' %> 
    <% end %> 
    <div id="loading"> 
     <h4>Loading</h4> 
    </div> 
    </div> 
    <div class="image-upload"> 
    <% @project.photos.each do |photo| %> 
     <%= image_tag photo.image_url.to_s %> 
     <p><%= link_to "Delete", project_photo_path(@project, photo), :method => :delete, :class => 'btn' %></p> 
    <% end %> 
    </div> 
+1

使用'window.location.reload()',而不是仅仅'location.reload()' – vee

+0

@vinodadhikary的问题是,下载的背景和页面重新加载立即,图像不是当加载 –

+0

你在做什么下载? –

回答

0

只需将location.reloadDone部分并检查加载的图像是否为$("#image")然后点击window.location.reload

0

我想你可以尝试在你的javascript函数中使用Ajax。下载完成后,触发ajax调用到控制器/方法中,并且您的方法将自动将页面呈现回视图。您回拨给控制器的原因可能会帮助您将所有即时变量提供给您的视图。

$.ajax({ 
url: 'controller/method', 
type: 'post', 
data: 'YOUR DATA or Nothing', 
success: function(data) {} 
}); 

如果你不需要成功的功能,那么你只需使用url和post。尝试一些,你将能够弄清楚。

相关问题