Ruby on rails 无法上载文件

Ruby on rails 无法上载文件,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我上传文件时遇到问题: 这是我的html: <%= form_tag import_test_path, multipart: true do %> <%= file_field_tag :file, :style => 'display:inline; margin-top:-10px' %> <%= submit_tag 'Hochladen', :class => 'btn btn-sm btn-info' %> <% end %&

我上传文件时遇到问题:

这是我的html:

<%= form_tag import_test_path, multipart: true do %>
 <%= file_field_tag :file, :style => 'display:inline; margin-top:-10px' %>
 <%= submit_tag 'Hochladen', :class => 'btn btn-sm btn-info' %>
<% end %> 
但这证明了一个错误:

 no implicit conversion of ActionDispatch::Http::UploadedFile into String
 in line: DBF::Table.new(params[:file], nil, 'cp1252')
 unexpected prefix_suffix: #<ActionDispatch::Http::UploadedFile:0x6793d10 @tempfile=#  <Tempfile:C:/Users/EMMANU~1/AppData/Local/Temp/RackMultipart20131110-6816-ogkd3i>, @original_filename="patient.DBF", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"patient.DBF\"\r\nContent-Type: application/octet-stream\r\n">
 in line: file = Tempfile.new(params[:file])
接下来,我尝试先生成一个临时文件:

def import
    file = Tempfile.new(params[:file])
    widgets = DBF::Table.new(file, nil, 'cp1252')
    w = widgets.find(6)
    p = Patient.new
    p.vorname = w.vorname
    p.name = w.name
    p.geburtsdatum = w.geburt
    p.save
    respond_to do |format|
     format.html {redirect_to :back }
    end  
  end
但这也证明了一个错误:

 no implicit conversion of ActionDispatch::Http::UploadedFile into String
 in line: DBF::Table.new(params[:file], nil, 'cp1252')
 unexpected prefix_suffix: #<ActionDispatch::Http::UploadedFile:0x6793d10 @tempfile=#  <Tempfile:C:/Users/EMMANU~1/AppData/Local/Temp/RackMultipart20131110-6816-ogkd3i>, @original_filename="patient.DBF", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"patient.DBF\"\r\nContent-Type: application/octet-stream\r\n">
 in line: file = Tempfile.new(params[:file])
意外的前缀\u后缀:#
第行:file=Tempfile.new(参数[:file])

我错了什么?谢谢,祝你今天愉快

访问
params[:file]
是一个
ActionDispatch::Http::UploadedFile
,它只是用于存储上传内容的TmpFile的包装


您需要
从类似IO的对象中读取
,才能获取内容。

请尝试
DBF::Table.new(params[:file].path,nil,'cp1252')

您能描述一下我应该如何从临时文件中读取内容吗?奇怪的是,当我在本地运行
DBF::Table.new(“filename.DBF”,nil,'cp1252')
时,我也只传递一个
filename.DBF
文件,我得到的字符串也包含空字节问题。你有没有想过@JohnSmith?@pav没有对不起!最后,我找到了另一个我记不得的解决方案!