[英]Rails and Importing CSV issue?
這似乎是一個非常小的錯誤,但我找不到任何解決這個問題的方法。我試圖在我的rails(3.2)應用程序(ruby 1.9.3)中使用CSV gem,我收到錯誤“NoMethodError”。 我的控制器是:
require 'csv'
def import
file = params[:file] <-- error
CSV.parse(file, :headers => false) do |row|
Event.new(:Ename => row[0], :Edate => row[1], :Elocation => row[2], :Edesc => row[3], :Oname => row[4], :Oemail => row[5], :Odetail => row[6])
end
end
我從用戶可以上傳csv文件的視圖中獲取此文件。 我得到一個NoMethodError(nil的未定義方法'nil':NilClass)。 我最好的猜測是我使用這種方法是錯誤的,但接下來我的問題是如何解析Csv數據? 我想從我的視圖中檢索文件,然后將數據解析到數據庫中。 我怎樣才能打開相同的文件? 以上方法不正確嗎? 快速說明,我嘗試使用'FasterCSV'寶石,但我得到了“使用標准的FasterCsv 1.9.2 gem”。 我不得不從fastercsv更改為標准csv,因為對heroku的gem部署給出了問題。
忘了給視圖文件,
<%= form_tag({:action => :import}, :multipart => true) do %>
<%= file_field_tag 'file' %>
<% end %>
這是基本的。 我得到的錯誤是在解析方法..我看了文檔,看到我應該使用一個字符串。 但我認為'params [:file]'給了我這個。 對不起,我對Rails比較新。
您的代碼可能如下所示:
if request.post? && params[:file].present?
infile = params[:file].read
CSV.parse(infile) do |row|
end
end
CSV.parse需要一個字符串而不是文件http://ruby-doc.org/stdlib-1.9.3/libdoc/csv/rdoc/CSV.html ,請嘗試使用CSV.read
@tommasop也正確,您的文件可能不會保留在文件系統上。 確保先保存它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.