未经许可的参数:文件rails 4

时间:2015-05-08 05:38:56

标签: ruby-on-rails ruby-on-rails-4

在我的应用程序中,我正在创建一个上传多个文档的表单。现在我已经发布了包含2个上传文档的表单,但由于错误而无法保存在数据库中。但我得到了上面提到的所有参数。请帮我解决这个问题。

在控制器中:

def create
  @sr_document = SrDocument.new(sr_document_params)
end

def sr_document_params
  params.require(:sr_document).permit(:file_type, :file, :service_request_id, :file_file_name, :file_content_type, :file_file_size)
end

在日志中:

  

“sr_document”=> { “文件”=> [

           

@临时文件=#,   @ original_filename =“Reliance Web-Chat.pdf”,   @ content_type =“application / pdf”,@ headers =“Content-Disposition:   形式数据;名= \ “sr_document [文件] [] \”;文件名= \“倚   Web-Chat.pdf \“\ r \ nConContent-Type:application / pdf \ r \ n”>,

           

@tempfile =#\,@ original_filename =“Flipkart.pdf”,@ content_type =“application / pdf”,   @ headers =“Content-Disposition:form-data;   名= \ “sr_document [文件] [] \”; filename = \“Flipkart.pdf \”\ r \ nConContent-Type:application / pdf \ r \ n“>

     

]}

2 个答案:

答案 0 :(得分:3)

您正在获取文件数组,因此我认为您遇到了问题: 尝试允许您的文件属性为:

def sr_document_params
  params.require(:sr_document).permit(:file_type, :file => [], :service_request_id, :file_file_name, :file_content_type, :file_file_size)
end

答案 1 :(得分:1)

这些文件存储在一个数组中,文件的信息如file_content_type,..是每个文件的属性,所以你不能这样做。 请尝试:

def create
  sr_documents = []
  sr_document_params[:file].each do |file|
     sr_documents << SrDocument.new({ file_content_type: file.content_type, 
                                      file_size: file.size,
                                      file: file })
  end
end


def sr_document_params
  params.require(:sr_document).permit(file: [])
end