jQuery-File-Upload - Carrierwave - 没有进度回调

时间:2014-03-13 23:02:35

标签: ruby jquery-file-upload

像许多其他人一样,我跟随Rails-Cast#381,jQuery文件上传,经过努力,我的大部分工作都在运作。我可以成功将一个或多个文件上传到Amazon S3并在我的数据库中创建相应的行。虽然让进度条工作,但我已经被困了几天了。当文件上传时它们出现并坐在那里,当结果完成时结果出现在我的列表中,进度条保持白色。问题似乎是我没有得到回调。我还没有能够获得进步的任何东西:,progressall:或者:完成。

我有一个文档模型,上传很简单。我使用会话ID来跟踪文档,直到我的第二步,直到我在创建步骤中添加。这是相关代码:

文件管理员:

...
def create
    @document = Document.new(document_params)
    @document.session = request.session_options[:id]

respond_to do |format|
    if @document.save
        format.js
        format.html { redirect_to documents_path, notice: 'Document was successfully created.' }
        format.json { render action: 'index', status: :created, location: @document }
    else
        format.js
        format.html { render action: 'new' }
        format.json { render json: @document.errors, status: :unprocessable_entity }
    end
end

documents.js.coffee

$ ->
  $('#new_document').fileupload
    dataType: "script"
    add: (e, data) ->
      data.context = $(tmpl("template-upload", data.files[0]))
      $('#new_document').append(data.context)
      data.submit()
    progress: (e, data) ->
      if data.context
        progress = parseInt(data.loaded / data.total * 100, 10)
        data.context.find('.bar').css('width', progress + '%')
    progressall: (e, data) ->
      overallProgress = parseInt(data.loaded / data.total * 100, 10);
      $('#all_progress .bar').css('width', overallProgress + '%')
    done: (e, data) ->
      alert("All finished")

index.html.erb

(Table of documents here - new uploads insert porperly)

<h2>Upload Document</h2>
<%= form_for Document.new do |f| %>
  <%= f.file_field :original, multiple: true, name: "document[original]" %>
  <!-- The table listing the files available for upload/download -->
<% end %>
<div id="progress">
  <div class="bar" style="width: 0%;"></div>
</div>

<div id="all_progress">
  <div class="upload">
    <div class="bar" style="width: 0%;"></div>
  </div>
</div>

<script id="template-upload" type="text/x-tmpl">
<div class="upload">
  {%=o.name%}
  <div class="progress">
    <div class="bar" style="width: 0%">
    </div>
  </div>
</div>
</script>

从javascript中,我也应该在上传结束时看到一个警告弹出窗口,但这种情况从未发生过。如果我把它放在add:部分中,它会在上传开始时显示。那个工作但是.fileupload下的其他所有内容似乎永远都不会被调用。

关于下一步的建议?

1 个答案:

答案 0 :(得分:0)

事情现在正在发挥作用(我发布问题时似乎总是这样)。当我做这个帖子时,我应该注意到这一点,但是在我认为我有四个空格的两个地方,我有一个标签。显然coffeescript不会将制表符解释为空格集。这并没有引发错误,但它并没有排除进展:( e,数据) - &gt; 正确而且其下的所有内容都被忽略了。