从Excel文件读取和保存数据 – 如何parsing文件 – 未定义的方法`to_f'为#<Array:0x1579b6a8>

我跟随了关于如何从Excel导入数据的RailsCast教程。

我想阅读我的excel文件,并告诉他要读取哪些信息并保存,指示要接收的行。 所以我在我的模型(.rb)文件中写了类似的东西:

def self.to_csv(options = {}) CSV.generate(options) do |csv| csv<<column_names all.each do |repartition| csv<<repartition.attributes.values_at(*column_names) end end end def self.import(file) #Ouverture du fichier spreadsheet = open_spreadsheet(file) #Lecture du fichier, lignes par lignes, en aveugle (1..spreadsheet.last_row).each do |i| @repartition=Repartition.new @repartition.fond_repartition_id=spreadsheet.row(4) @repartition.date_repartition=spreadsheet.row(3) @repartition.AssetAllocCash=spreadsheet.row(5) @repartition.AssetAllocEquity=spreadsheet.row(6) @repartition.AssetAllocBond=spreadsheet.row(7) @repartition.AssetAllocOther=spreadsheet.row(8) #Sauvegarde de la ligne qui vient d'être lu repartition.save! #Depart prochaine ligne ou fin end end def self.open_spreadsheet(file) case File.extname(file.original_filename) when ".csv" then Roo::Csv.new(file.path, options={}) when ".xls" then Roo::Excel.new(file.path, options={}) when ".xlsx" then Roo::Excelx.new(file.path, options={}) else raise "Unknown file type: #{file.original_filename}" end end 

而且我在我的控制器中写了这个代码

 def import Repartition.import(params[:file]) redirect_to upload_path, notice: "Répartition effectuée avec succès" end 

我有错误消息:

 NoMethodError in RepartitionsController#import undefined method `to_f' for #<Array:0x1579b6a8> 

我所有的数据都是浮动属性。 为什么我有这个错误?

这是为我工作。 parsing我的Excel文件,我做了以下步骤。

我正在使用gem。 所以在我的GemFile是行:

 gem 'roo', '~>2.1.0' 

然后我运行命令行:

 bundle install 

在我的控制器中:

  def import Repartition.import(params[:file]) redirect_to resultat_path, notice: "Répartition effectuée avec succès" end