我正在尝试通过csv将数据插入数据库。 这是我的控制器代码
require 'csv' def index end def add @filename=CSV::Reader.parse(params[:dump][:file]) n=0 CSV::foreach(@filename, :headers => true) do |row| Student.new(row.to_hash.symbolize_keys).save n=n+1 end flash.now[:message]="CSV Import Successful, #{n} new records added to data base" end
现在,当我插入csv文件时,我收到错误
**can't convert CSV::IOReader into String**
我的ruby版本是1.8.7
任何帮助将不胜感激。
答案 0 :(得分:0)
如果您使用的是Ruby,则可以使用以下代码:
require 'csv'
def index
end
def add
n=0
CSV::foreach(params[:dump][:file]) do |row|
Student.new(row.to_hash.symbolize_keys).save
n=n+1
end
flash.now[:message]="CSV Import Successful, #{n} new records added to data base"
end
您可以获取有关CSV的更多信息:fore http://apidock.com/ruby/CSV
我没有上面的回复,因为我假设[:dump] [:file]是文件的路径(字符串对象),但是看到那个错误,你应该先读取文件(它是一个TempFile对象) ),然后将内容解析为字符串:
require 'csv'
def index
end
def add
n=0
CSV::parse(params[:dump][:file].read, :headers => true) do |row|
Student.new(row.to_hash.symbolize_keys).save
n=n+1
end
flash.now[:message]="CSV Import Successful, #{n} new records added to data base"
end