【问题标题】:Import .csv format file into openproject将 .csv 格式文件导入 openproject
【发布时间】:2017-02-17 05:30:31
【问题描述】:

设置 apache 服务器后,当我们选择要导入的 .csv 文件时,我收到以下错误消息:

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

【问题讨论】:

  • 你能分享你正在登录的参数吗?
  • 你能分享回溯/日志吗?
  • TypeError(没有将 ActiveSupport::HashWithIndifferentAccess 隐式转换为字符串):app/controllers/product_imports_controller.rb:8:in read' app/controllers/product_imports_controller.rb:8:in create'

标签: ruby-on-rails ruby


【解决方案1】:

试试这个: 问题是控制器中的哈希值存在安全问题。 你试试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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2016-09-25
    相关资源
    最近更新 更多