2012-04-18 60 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

相關問題