【发布时间】:2015-03-08 20:27:47
【问题描述】:
我觉得我正在服用疯狂的药丸,但我刚刚撞到了一堵砖墙,再也不能解决这个问题了。答案似乎很简单,但我的头脑已经麻木了,我无法突破这堵墙。
我正在使用 Roo gem 导入一个 excel 文档(xls 格式)并将其推送到一个数组中。我结束了一系列数组。很简单,效果很好。
然后我尝试获取该数组的值并将它们分配给对象的属性。诀窍似乎是遍历行,将数组值分配给适当的对象属性,保存,然后移动到下一行。我确定我在做的是各种垃圾,但我被卡住了,想不出解决办法。
这是我的控制器:
class PlanesController < ApplicationController
def new
@plane = Plane.new
@plane.upload
end
end
这是我的模型:
require 'roo'
class Plane < ActiveRecord::Base
attr_accessor :id, :name, :version
def upload
arr = []
sheet1 = Roo::Spreadsheet.open('lib/assets/test.xls')
sheet1.each { |hash| arr<<hash}
i = 0
while i < arr.length do
@id = arr[i][0].to_int
@name = arr[i][1]
@version = arr[i][2]
i += 1
end
end
end
基本上,我如何将存储在“arr”数组中的值分配给我的对象?我希望@id 最终成为 Plane.id,它在我的控制器中由实例变量 @plane 访问。我觉得我做错了,因为我实际上是在尝试根据电子表格的长度创建多个对象并保存每个新行以填充我的数据库。就像我说的,可能是超级垃圾,但我缺少一些基本的东西,感谢您的帮助。
【问题讨论】:
标签: arrays excel postgresql object ruby-on-rails-4