[英]FasterCSV for importing users in rails
嗨,我正在嘗試使用FasterCSV從CSV文件導入用戶
我有
<form action='/users/bulk_create' method='post'>
<%= file_field_tag "csv_file" %><br/>
<%= submit_tag("Import") %>
</form>
在我的用戶控制器中,我有一個類似的方法
def bulk_create
login, password, name, email = 0, 1, 2, 3
require 'fastercsv'
parsed_rows=FasterCSV.parse(params[:csv_file])
parsed_rows.each do |row|
puts "#{row[name]}"
end
end
當我執行上述操作並在日志中對其進行檢查時,出現以下錯誤:
NoMethodError (undefined method `pos' for nil:NilClass):
app/controllers/users_controller.rb:688:in `bulk_create'
FasterCsv根本不讀取文件。 如何使它閱讀我使用sudo gem install fastcsv安裝了gem
由於要上傳文件,因此必須將表單的enctype
屬性指定為multipart/form-data
<form action='/users/bulk_create' method='post' enctype='multipart/form-data'>
其次,您不能直接將params[:csv_file]
傳遞給FasterCSV,需要進行完整性檢查,然后將其另存為csv文件。
在此處查看http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm ,其中提供了文件上傳的基礎知識。 我強烈建議您查看文件上傳插件,例如“ Paperclip ”之類。
然后,在您保存文件后,“ FasterCSV”的文檔建議
#Reading
#From a File
#A Line at a Time
FasterCSV.foreach("path/to/file.csv") do |row|
# use row here...
end
它也可以工作:
@rows = []
uploaded_io = params[:csv_file]
FCSV.new(uploaded_io.tempfile).each do |row|
@rows << row
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.