像许多其他人一样,我跟随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下的其他所有内容似乎永远都不会被调用。
关于下一步的建议?
答案 0 :(得分:0)
事情现在正在发挥作用(我发布问题时似乎总是这样)。当我做这个帖子时,我应该注意到这一点,但是在我认为我有四个空格的两个地方,我有一个标签。显然coffeescript不会将制表符解释为空格集。这并没有引发错误,但它并没有排除进展:( e,数据) - &gt; 正确而且其下的所有内容都被忽略了。