使用 excel 文件内容初始化对象并保存到数据库
Initialize object with excel file contents and save to database
我觉得我正在服用疯狂的药丸,但我只是碰壁了,不能再破解了。答案看似简单,心却麻木,无法冲破这堵墙
我正在使用 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 访问。我觉得我做错了,因为我实际上是在尝试根据电子表格的长度创建多个对象,并保存每个新行以填充我的数据库。就像我说的,可能是超级垃圾,但我缺少一些基本的东西,感谢您的帮助。
我刚刚更改了我的控制器的新操作以包含 @person = Plane.create(plane_params)
,然后将 plane_params
放入我包含在我的控制器中的模块中...能够使用较新的 Rails 4 个强大的参数,还导入了 .xls 文件,所有这些都在那个单一的方法中(而不是我的模型,回想起来如果我使用 .create
就没有多大意义)。现在工作起来很有魅力,但我想知道是否有一个 gem/3rd 我错过的派对插件。
我觉得我正在服用疯狂的药丸,但我只是碰壁了,不能再破解了。答案看似简单,心却麻木,无法冲破这堵墙
我正在使用 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 访问。我觉得我做错了,因为我实际上是在尝试根据电子表格的长度创建多个对象,并保存每个新行以填充我的数据库。就像我说的,可能是超级垃圾,但我缺少一些基本的东西,感谢您的帮助。
我刚刚更改了我的控制器的新操作以包含 @person = Plane.create(plane_params)
,然后将 plane_params
放入我包含在我的控制器中的模块中...能够使用较新的 Rails 4 个强大的参数,还导入了 .xls 文件,所有这些都在那个单一的方法中(而不是我的模型,回想起来如果我使用 .create
就没有多大意义)。现在工作起来很有魅力,但我想知道是否有一个 gem/3rd 我错过的派对插件。