2012-04-18 70 views
0

我只想形式读取.csv文件的内容,而不将它们存储在任何地方和履行本我将如何存储文件的内容,而不将其存储

csv_text = File.read('thefiletheychoose') # If this line isnt possible can we store the contents of the csv temp somewhere? 
csv = CSV.parse(csv_text, :headers => true) 
csv.each do |row| 
    row = row.to_hash.with_indifferent_access 
    Company.create!(row.to_hash.symbolize_keys) 
end 

我有数据库或服务器没有线索的.html会是什么样这个

+0

当你得到一个文件的形式提交你不一定必须从某个地方保存。你可以在内存中读取它并在完成时读取它。 – forker 2012-04-18 11:37:55

+0

你想在客户端做到这一点? – Falcon 2012-04-18 11:39:02

+0

如果可能的话,我会怎样做这个forker目前我所设置的是一个测试csv控制器与索引页 – ahmet 2012-04-18 11:39:43

回答

1

考虑你在你的表单文件上传字段:

<%= form_tag '/companies/create', :multipart => true do %> 
    <label for="file">File to Upload</label> 
    <%= file_field_tag "upload" %> 
    <%= submit_tag %> 
<% end %> 

你应该做在控制器中的以下内容:

def create 
    csv_text = params[:upload].read 
    # Same thing as yours: 
    csv = CSV.parse(csv_text, :headers => true) 
    csv.each do |row| 
    row = row.to_hash.with_indifferent_access 
    Company.create!(row.to_hash.symbolize_keys) 
    end 
end 
+0

在控制器即时通讯获得一个未定义的方法'读',我怎么会把file_field一个形式我似乎没有工作 – ahmet 2012-04-18 11:50:44

+0

检查编辑:) – forker 2012-04-18 11:56:51

+0

你应该改变'/公司/创建'到你有适当的控制器/动作网址。不要忘了你应该在'config/routes.rb'中有一个正确的URL映射,比如'post'/ companies/create'=>'companies#create'' – forker 2012-04-18 12:04:45

相关问题