簡體   English   中英

Rails和導入CSV問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM