【发布时间】:2017-03-09 17:42:06
【问题描述】:
我正在搜索将 excel 数据导入 mySQL 数据库。我参考“Ruby on Rails - Railscasts #396 Importing Csv And Excel”。随之而来的是,我得到了错误
dynamic constant assignment Subject = find_by(id: row["id"]) || new ^
谁能解释并给出解决方案。我的代码在 model.rb 中,
def self.import(file)
allowed_attributes = [ "module_number", "module_name"]
Spreadsheet.client_encoding = 'UTF-8'
spreadsheet = open_spreadsheet(file.path)
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
subject = find_by(id: row["id"]) || new
subject.attributes = row.to_hash.slice(*allowed_attributes)
subject.save!
end
结束
def self.open_spreadsheet(file)
case File.extname(file.original_filename)
when ".csv" then
Roo::Csv.new(file.path, nil, :ignore)
when ".xls" then
Roo::Excel.new(file.path, nil, :ignore)
when ".xlsx" then
Roo::Excelx.new(file.path, nil, :ignore)
when ".xml" then
Roo::XML.new(file.path, nil, :ignore)
else
raise "Unknown file type: #{file.original_filename}"
end
结束
谢谢。
【问题讨论】:
标签: ruby-on-rails excel