1

私はsidekiqでgem「jquery-fileupload-rails」と「carrierwave_backgrounder」gemを使用しています。ダウンロードが完了した後にページをリロードする方法を追加するには?

問題は、ダウンロードバックグラウンドで行われ、画像がロードされたときではなく、ページがすぐにリロードされることです

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>
4

3 に答える 3

0

JavaScript関数でAjaxを使用できると思います。ダウンロードが完了したら、コントローラー/メソッドへの ajax 呼び出しをトリガーします。メソッドは、ページをビューに自動的にレンダリングします。コントローラーにコールバックする理由は、すべてのインスタント変数をビューに追加するのに役立つ場合があります。

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

成功関数が必要ない場合は、url と post を使用するだけです。いくつか試してみると、それを理解できるようになります。

于 2013-08-26T06:19:10.067 に答える
0

location.reloadfromセクションを削除してDone、画像がロードされているかどうかを確認してから$("#image")ヒットするだけですwindow.location.reload

于 2013-08-26T06:04:56.927 に答える