Был выбран acts_as_attachment (я его люблю) и написано небольшое количество кода.
Во первых, в страницу для закачки был вставлен яваскрипт который динамически добавлял, удалял поля типа файл:
<script type="text/javascript">
var file_index = 0;
function add_file()
{
var smb = document.createElement("input");
smb.type = "file";
smb.name = "file[" + file_index + "]";
smb.id = "file_" + file_index;
document.getElementById("files").appendChild(smb);
var a = document.createElement("a");
a.href = "javascript:remove_file(" + file_index + ");";
a.id = "remove_file_" + file_index;
a.appendChild(document.createTextNode("Удалить"));
document.getElementById("files").appendChild(a);
var br = document.createElement("br");
br.id = "br_file_" + file_index;
document.getElementById("files").appendChild(br);
file_index++;
}
function remove_file(id)
{
var container = document.getElementById("files");
var input_f = document.getElementById("file_" + id);
var a = document.getElementById("remove_file_" + id);
var br = document.getElementById("br_file_" + id);
container.removeChild(input_f);
container.removeChild(a);
container.removeChild(br);
}
</script>
При вызове add_file внутрь дива с id "files" добавляется новый набор из поля воода, ссылки на удаление этого поля и переноса строки.В код контроллера был вставлен следующий фрагмент для обработки:
params[:file].each do |f|
p = Hash["attachment" => {"uploaded_data" => ""}]
p["attachment"]["uploaded_data"] = f[1]
att = Attachment.create!p["attachment"]
@page.attachments << att
end
Конечно обработки на правильность файлов нет, но добавить её дело 2х минут