首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery-File-Upload - Carrierwave -无进度回调

jQuery-File-Upload - Carrierwave -无进度回调
EN

Stack Overflow用户
提问于 2014-03-14 07:02:35
回答 1查看 220关注 0票数 0

像其他许多人一样,我关注了Rails-Cast #381,jQuery文件上传,经过努力,我已经完成了大部分工作。我可以成功地将一个或多个文件上传到亚马逊S3,并在我的数据库中创建相应的行。不过,我已经被进度条卡住好几天了。当文件上传完成,结果出现在我的列表中时,它们会出现在那里,但进度条保持为白色。问题似乎是我没有得到回调。我还没能让任何东西为progress:,progressall:,或:done工作。

我有一个文档模型,上传很简单。在我的流程中的第二步之前,我使用会话id来跟踪文档,因此在创建步骤中添加了会话id。相关代码如下:

文档控制器:

代码语言:javascript
复制
...
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

代码语言:javascript
复制
$ ->
  $('#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

代码语言:javascript
复制
(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下的其他所有东西似乎永远不会被调用。

关于下一步该往哪里看的建议?

EN

回答 1

Stack Overflow用户

发布于 2014-03-14 23:04:10

现在一切都正常了(就像我发布问题时总是发生的那样)。当我写帖子的时候,我应该注意到这一点,但是在我认为我有四个空格的两个地方,我有一个制表符。显然,coffeescript不会将制表符解释为一组空格。这并没有抛出一个错误,但是它没有列出进度:(e,-> )->以及下面所有被忽略的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22392843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档