如何让多个文件上传在 Rails 5 中工作?

How can I get multiple file uploads working in Rails 5?

我的控制器中有以下内容在 Rails 4 中运行良好:

def create_multiple
  params[:documents].map do |document|
    if document[:upload]
      doc = Document.new
      doc.upload = document[:upload]
      doc.category_id = @category.id
      doc.save
    end
  end
  redirect_to @category, notice: 'Documents saved'
end

现在,升级到Rails5后,就不行了。我强烈怀疑这是因为 params is now an Object, rather than HashWithIndifferentAccess,但我不知道如何使多文件上传再次工作。

试过这个:

params.to_unsafe_h[:documents].map do |document|

但是随后它失败了 no implicit conversion of Symbol into Integer if document[:upload]部分。

关于我如何推进这件事有什么想法吗?

好的,我不得不重新设计我的表格,使其更 "railsy" 才能在 Rails 5 中工作,在 Slim 中(在 new_multiple 视图中):

= form_tag create_multiple_category_documents_path(@category), multipart: true do
  .row.bottom30
    - @documents.each_with_index do |document, ndx|
      = fields_for 'documents[]', document, index: ndx do |f|
        .col-xs-12.col-sm-6.col-md-4.bottom30
          => f.label :title
          = f.text_field :title, class: 'form-control'
          = f.file_field :upload

这是控制器中现在的内容:

def new_multiple
  @documents = 20.times.map { @category.documents.build }
end

def create_multiple
  params[:documents].each do |num, document|
    unless document[:upload].blank?
      doc = Document.new
      doc.upload = document[:upload]
      doc.category_id = @category.id
      doc.save
    end
  end
  redirect_to @category, notice: 'Documents saved'
end

可能有更好的方法来执行此操作,但目前有效。