如何使用Rails解析本地CSV文件?

时间:2017-05-24 06:00:51

标签: ruby-on-rails ruby csv file-upload upload

我尝试使用smarter_csv使用我的Rails应用程序解析csv文件。但是文档只解释了如何解析已经属于该应用程序的文件。

我想解析一个本地存储在我计算机上的文件。所以我想我必须上传文件,解析它,然后删除它。

这是我走了多远:

<%= form_tag({action: :upload}, multipart: true) do %>
  <%= file_field :csv %>
  <%= submit_tag 'Submit' %>
<% end %>

那么我如何在控制器操作中引用和使用上传的文件?

def upload
  #save file temporarily to app
  filename = #filename
  #parse file with smarter_csv
  #File.delete(filename)
end

1 个答案:

答案 0 :(得分:1)

要将文件路径作为字符串获取,您需要执行以下操作:

filename = params[:csv].path

asms [:csv]是一个UploadedFile对象。您不需要自己处理临时文件,即存储和删除它。 Rails会为你做到这一点。根据文件:

  

上传的文件是临时文件,其生命周期是一个请求。当对象完成后,Ruby取消链接文件,因此不需要使用单独的维护任务来清理它们。