Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 在rails 3中上载多个文件_Ruby On Rails 3_Json_Upload - Fatal编程技术网

Ruby on rails 3 在rails 3中上载多个文件

Ruby on rails 3 在rails 3中上载多个文件,ruby-on-rails-3,json,upload,Ruby On Rails 3,Json,Upload,我正在上传多个文件,但是我没有在表单和控制器之间正确地传递参数-不太确定我遗漏了什么 形式非常简单: <%= form_tag({:controller => :admins, :action => :upload_json}, {:multipart => true, :method => :post, :html => { :class => "form-horizontal"}}) do %> <fieldset>

我正在上传多个文件,但是我没有在表单和控制器之间正确地传递参数-不太确定我遗漏了什么

形式非常简单:

<%= 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 %>
在视图中,我只进行了一次调试以查看返回的内容,它只提取任何一组选定文件中的最后一个文件

#<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>>

不确定我缺少了什么来让它返回所有选定的文件。谢谢你的帮助

我可以通过将file\u field\u标记调整为:

解决这个问题,我可以通过将file\u field\u标记调整为:

如果缺少原始文件名,请将@output=params[:jsonfileupload]更改为@output=params[:jsonfileupload]。原始文件名感谢@Kien than。如果选择多个文件,我仍然无法看到多个文件。我只选择了最后一个文件。我应该注意,此表单没有绑定到模型,因为它只是执行一些临时数据加载,然后被丢弃。理论上,我认为,通过传递multiple:true,它们将作为文件数组发送。然后我可以在控制器中循环数组。除非您使用客户端脚本,否则不可能将多个文件上传到单个文件字段AFAIK。你签出JQuery文件上传了吗?实现起来非常简单。有一个专业版的railscast插曲将引导您完成所涉及的每一步。如果您错过了原始文件名,请将此@output=params[:jsonfileupload]更改为@output=params[:jsonfileupload]。原始文件名感谢@Kien-than。如果选择多个文件,我仍然无法看到多个文件。我只选择了最后一个文件。我应该注意,此表单没有绑定到模型,因为它只是执行一些临时数据加载,然后被丢弃。理论上,我认为,通过传递multiple:true,它们将作为文件数组发送。然后我可以在控制器中循环数组。除非您使用客户端脚本,否则不可能将多个文件上传到单个文件字段AFAIK。你签出JQuery文件上传了吗?实现起来非常简单。有一个专业版的railscast插曲,将引导你完成每一个步骤。这非常有帮助。这非常有帮助。
#<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>>