Я сделал это, добавив отдельную форму вне моей основной формы только для загрузки файлов:
= s3_uploader_form post: void_url, as: "photo_url", id: "photo_upload" do
= file_field_tag "file", multiple: true
= form_for @model do |f|
...
= f.fields_for :children do |child_fields|
= file_field_tag :"#{child_id}_file", multiple: true
Затем я подключаю часть плагина fileupload к обеим формам, например так:
$("#photo_upload").fileupload
add: (e, data) ->
data.submit()
done: (e, data) ->
file = data.files[0]
// For each child
$("##{child_id}_file").fileupload
dropzone: $("##{child_id}_dropzone")
add: (e, data) ->
# Upload the file using the external upload form with the proper form action and fields
$rootPhotoUploadForm.fileupload('add', { files: [file], child_id: child_id })
По сути, я использую API jQuery-File-Upload для загрузки файла из внешней формы загрузки.
Обратите внимание, что при запуске я включаю child_id
«добавить» во внешней форме загрузки, чтобы я знал, какой ребенок вызвал загрузку файла.Это значение доступно в переменной data
в каждом обратном вызове.
Я много раз абстрагировал, так как есть много специфичного для приложения кода, надеюсь, вы сможете понять его оттуда.