2012-11-14 56 views
0

我正在上傳多個文件,但我沒有正確地在窗體和控制器之間傳遞參數 - 不太清楚我錯過了什麼。在rails中上傳多個文件3

形式很簡單:

<%= form_tag({:controller => :admins, :action => :upload_json}, {:multipart => true, :method => :post, :html => { :class => "form-horizontal"}}) do %> 

    <fieldset> 
    <legend>Data</legend> 
    <ol class="field-list"> 
     <li> 
     <label for="data-file">JSON File</label> 
     <%= file_field_tag 'jsonfileupload', multiple: true %> 
     </li> 
    </ol> 


    <div class="form-actions"> 
     <%= submit_tag "Upload" %> 
    </div> 

    </fieldset> 

<% end %> 

在控制器中,我只是在做這個,看看有什麼傳遞:

@output = params[:jsonfileupload] 

在視圖中,我只是做一個debug,看看有什麼返回,它只會拉取任何一組選定文件的最後一個文件。

#<ActionDispatch::Http::UploadedFile:0x007f95d0c21010 @original_filename="4987.json", @content_type="application/json", @headers="Content-Disposition: form-data; name=\"jsonfileupload\"; filename=\"4987.json\"\r\nContent-Type: application/json\r\n", @tempfile=#<File:/var/folders/0p/6lq88m950mgftng1qm1w63_8000194/T/RackMultipart20121114-389-t9l7vs>> 

不知道我錯過了什麼讓它返回所有選定的文件。謝謝您的幫助!

+1

你錯過'original_filename',改變這種'@output =參數[:jsonfileupload]''到@output =參數[:jsonfileupload] .original_filename ' – Thanh

+0

謝謝@Kien Thanh。如果我選擇多個文件,我仍然無法看到多個文件。我只得到所選的最後一個文件。 – matthewvb

+0

我應該注意到,這種形式並不與模型綁定,因爲它只是做一些臨時的數據加載然後被丟棄。 – matthewvb

回答

6

我能夠通過調整file_field_tag來解決這個:<%= file_field_tag 'jsonfileupload[]', multiple: true %>

+0

that []是關鍵... –

+0

這是非常有幫助的。 – ugoa