未定义的方法'path';csv.read

未定义的方法'path';csv.read,csv,methods,path,Csv,Methods,Path,我试图从form_标签读取csv文件,但是当用csv.read(file.path)打开文件时抛出错误“undefined method`path”,有人知道如何修复它吗 index.html.erb中的我的代码 <%= form_tag("/main/import",method: "get",:multipart => true,name: "hola") do %> <%= file_field_tag :file %> <%=

我试图从form_标签读取csv文件,但是当用csv.read(file.path)打开文件时抛出错误“undefined method`path”,有人知道如何修复它吗

index.html.erb中的我的代码

    <%= form_tag("/main/import",method: "get",:multipart => true,name: "hola") do %>
    <%= file_field_tag :file %> 
    <%= submit_tag( "Import" ) %>
    <% end %>

这是因为根据您尝试上载的CSV文件的大小,
文件的类型可能是或对象。因此,你可能需要采取适当的行动,这取决于它是什么。请看下面的解释。接下来,您的代码将类似于:

file_data = params[:file]
if file.respond_to?(:read)
  csv_text = file.read
elsif file.respond_to?(:path)
  csv_text = File.read(file.path)
else
  logger.error "Bad file_data: #{file.class.name}: #{file.inspect}"
end
@rowarraydisp = CSV.parse(csv_text, :headers => true)

另外,您已经将方法指定为GET in
form\u tag
,在您上传表单时,您正在发布数据,因此我只需完全删除该方法或正确地将该方法指定为post。

确定,但当我这样做时抛出此错误“第1行中缺少或不正确的引号”->@rowarraydisp=CSV.parse(CSV\u text,:headers=>true)ty:)只是我的file.csv的格式,它抛出了错误
file_data = params[:file]
if file.respond_to?(:read)
  csv_text = file.read
elsif file.respond_to?(:path)
  csv_text = File.read(file.path)
else
  logger.error "Bad file_data: #{file.class.name}: #{file.inspect}"
end
@rowarraydisp = CSV.parse(csv_text, :headers => true)