【发布时间】:2011-02-06 06:55:46
【问题描述】:
大家好,我正在尝试将最近流行的 jQuery File Uploader 与 Rails 3 联系起来(虽然这与这个问题还没有关系,但有一个 Paperclip 后端)。
这个 jQuery 插件基本上允许上传多个文件。我正在阅读this page,了解如何在每次上传时传递额外的 POST 数据。这就是我遇到麻烦的地方。以下是页面提供的示例代码:
$('.upload').fileUploadUI({
uploadTable: $('.upload_files'),
downloadTable: $('.download_files'),
buildUploadRow: function (files, index) {
var file = files[index];
return $(
'<tr>' +
'<td class="file_upload_start">' +
'<div class="ui-state-default ui-corner-all ui-state-hover" title="Start Upload">' +
'<span class="ui-icon ui-icon-circle-arrow-n">Start Upload<\/span>' +
'<\/div>' +
'<\/td>' +
'<td>' + file.name + '<\/td>' +
'<td class="file_upload_desc"><input type="text" title="File description"><\/td>' +
'<td class="file_upload_progress"><div><\/div><\/td>' +
'<td class="file_upload_cancel">' +
'<div class="ui-state-default ui-corner-all ui-state-hover" title="Cancel">' +
'<span class="ui-icon ui-icon-cancel">Cancel<\/span>' +
'<\/div>' +
'<\/td>' +
'<\/tr>'
);
},
// ...
我需要替换的部分是file_upload_desc 中的输入文本框。取而代之的是,我需要包含一个由以下内容构成的下拉控件:
f.collection_select :category_id, Category.all, :id, :name
这在静态视图中有效,但每次选择要上传的文件时我都需要添加它。
我的困惑在于在哪里以及如何管理动态下拉列表(动态,因为它取决于知道存在哪些类别)到静态视图。
是否与创建部分视图有关,然后执行以下操作:
$.get("/partial", function(data) {
// blah blah
});
问题是,根据插件的documentation,buildUploadRow 必须返回 html,所以我必须获取返回的数据并将其连接到返回结果或其他东西。
一种可能性是在静态视图中写出一次,然后每当我需要在标记上传时动态添加它时,clone() 它,而记住要摆脱原始数据以避免它干扰 POST 数据。
感谢任何帮助!
【问题讨论】:
标签: jquery ruby-on-rails ruby ajax paperclip