对于我的应用程序,我通过file_field_tag
上传文件。如何使用SmarterCSV处理该文件?我尝试过这样一个方法SmarterCSV.process(@file.tempfile.path)
,但它返回一个空数组,即使CSV中有数据。
有什么想法吗?
对于我的应用程序,我通过file_field_tag
上传文件。如何使用SmarterCSV处理该文件?我尝试过这样一个方法SmarterCSV.process(@file.tempfile.path)
,但它返回一个空数组,即使CSV中有数据。
有什么想法吗?
提议的答案不起作用。
然而,如果你这样做:
clients_data = params[:file_categories]
clients = SmarterCSV.process(clients_data.tempfile, {:chunk_size => 1, :key_mapping => {:ca_id => :id, :ca_desc => :name}})
这很好用。你需要使用tempfile而不是original_filename。
tempfile
实例变量是正确的。谢谢! - Rian Rainey不清楚 @file 是什么,但如果来自一个典型的表单并被分配了类似于:
@file = params[:resource][:file_tag_name]
SmarterCSV.process(@file.original_filename)
CSV.parse(@file.original_filename)
SmarterCSV.process(@file.original_filename) 不起作用,因为它正在寻找文件存储的位置。
您需要使用
SmarterCSV.process(params[:file].tempfile, {:col_sep => "\t", :row_sep => "\n"})
使用制表符分隔的数据“\t”,行由新行“\n”分隔。