7

我正在尝试在我的新导轨项目中使用https://github.com/blueimp/jQuery-File-Upload/wiki/Rails-setup-for-V5。我想创建一个名为assignments的对象,并在其中附加多个文件。如何使用jQuery文件以嵌套形式上传?

如何为上传的文件创建嵌套形式的作业表单?

+1

嵌套表单在HTML4和HTML5中是非法的,并且通常会导致问题... – 2012-01-04 00:52:50

+4

他并不是指字面意义上的嵌套表单,而是以轨道方式,当您使用多个模型时。 – Robin 2012-01-04 00:55:04

+0

你有没有找到这个解决方案? – Wilhelm 2012-02-28 17:34:48

回答

2

这个插件改变input [type = file]的信息形式,当它在其他形式内时,它是无效的。我解决了这个问题:我更改为<div id="form">的外部形式。我通过jQuery提交表单

$.post(url, $('#form *').serialize(), function(response){...}, 'json') 

当然,您必须在提交表单之前在服务器端以某种方式管理上传。

2

我这样做是为了增加一个单独的表格我的主要形式外仅用于上传文件的方式:

= 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 

然后我勾了文件上传插件的一部分,以两种形式,像这样:

$("#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 }) 

基本上,我使用jQuery-File-Upload's API从外部上传表单上传文件。

请注意,当在外部上传表单上触发“添加”时,我会包含child_id,以便我知道哪个子级已触发文件上载。该值在每个回调中的data变量中可用。

我抽象了很多,因为有很多特定于应用程序的代码,希望你能从那里弄清楚。