2017-02-16 64 views
0

设置Apache服务器当我们选择要导入我收到以下错误消息.csv文件后:导入.csv格式文件转换成openproject

类型错误在ProductImportsController#create

no implicit conversion of ActiveSupport::HashWithIndifferentAccess into String 

product_imports_controller.rb

require 'csv'  
class ProductImportsController < ApplicationController 
    def new 
    @product_import = ProductImport.new 
    end 

    def create 
    csv_text = File.read(params[:product_import]) 
    csv = CSV.parse(csv_text, :headers => true) 
    csv.each do |row| 
     ProductImport.create!(row.to_hash) 
    end 
    end 
end 
+1

可以共享参数,可以说你是在日志中得到些什么? –

+0

你能分享回溯/日志吗? – user3402754

+0

TypeError(不支持将ActiveSupport :: HashWithIndifferentAccess隐式转换为String): app/controllers/product_imports_controller.rb:8:在'read'中 app/controllers/product_imports_controller.rb:8:在'create' – Ajay

回答

0

试试这个: 问题是在控制器中有一个带有散列的安全方面。 您尝试row.to_hash.permit!但我怀疑这会工作

模型来创建它:

require 'csv'  
class ProductImportsController < ApplicationController 
    def new 


@product_import = ProductImport.new 
    end 

    def create 
    csv_text = File.read(params[:product_import]) 
    csv = CSV.parse(csv_text, :headers => true) 
    csv.each do |row| 
     ProductImport.create_from_csv(row.to_hash) 
    end 
    end 

end 


class ProductImport < ActiveRecord::Base 
    def self.create_from_csv(data) 
    self.create!(data) 
    end 
end