2014-01-19 38 views
0

對紅寶石來說,我還算是一個先行者;我一直在嘗試使用roo,仍然無法導入任何東西!經過幾個小時的搜索,我認爲問題來自不再使用accessible_attributes的新rails版本(教程很好,但它們都使用此命令...) 沒有不能使用roo with attr_accessible

這裏是型號代碼i我正試圖修復。

#attr_accessible :name, :price, :released_on 
    #validates_presence_of :price  

def self.open_spreadsheet(file) 
case File.extname(file.original_filename) 
when '.csv' then Roo::Csv.new(file.path) 
when '.xls' then Roo::Excel.new(file.path) 
when '.xlsx' then Roo::Excelx.new(file.path) 
else raise "Unknown file type: #{file.original_filename}" 
end 

def self.import(file) 
spreadsheet = open_spreadsheet(file) 
header = spreadsheet.row(1) 
(2..spreadsheet.last_row).each do |i| 
    row = Hash[[header, spreadsheet.row(i)].transpose] 
    product = find_by_id(row["id"]) || new 
    product.attributes = row.to_hash.slice #(*accessible_attributes) 
    product.save! 
end 
end 

回答

0
(2..spreadsheet.last_row).each do |i| 
    row = Hash[[header, spreadsheet.row(i)].transpose] 
    product = find_by_id(row["id"]) || new 
    product.attributes = row.to_hash 
    product.save! 
end 

並確保你已經在你的控制器設置正確的權限,這樣的:

def product_params 
    params.require(:product).permit(:name, :price, :released_on) 
end