2015-03-08 57 views
1

我覺得我正在服用瘋狂的藥丸,但是我剛剛碰到一堵磚牆,無法再對此進行破解。答案似乎很簡單,但我的頭腦麻木,我無法突破這堵牆。使用excel文件內容初始化對象並保存到數據庫

我使用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 

主要是如何獲取存儲在「改編」數組中的我的價值觀被分配到我的對象?我希望@id結束Plane.id,它可以通過實例變量@plane在我的控制器中訪問。我覺得我做錯了,因爲我基本上試圖根據電子表格的長度創建多個對象,並保存每個新行以填充我的數據庫。就像我說的,可能是超級垃圾,但我錯過了一些基本的東西,並感謝幫助。

回答

1

我只是改變了我的控制器的新動作,包括@person = Plane.create(plane_params),然後把我包含在我的控制器模塊中的plane_params ...能夠使用新的軌道4強的參數,可以也導入.xls文件,所有這一切都是用單一的方法(而不是我的模型,如果我使用.create,回想起來沒什麼意義)。現在就像一個魅力,但我想知道是否有一個寶石/第三方插件爲此鋪設,我錯過了。