gpt4 book ai didi

ruby-on-rails - CSV 导入问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:09 24 4
gpt4 key购买 nike

我用这个来解析 CSV 文件:

csv_file = CSV.parse(
file.read(),
headers: true,
header_converters: :symbol
)

有效,但我想指定编码类型,所以我将:{encoding: 'UTF-8'} 添加到读取方法中,如下所示:

csv_file = CSV.parse(
file.read({encoding: 'UTF-8'}),
headers: true,
header_converters: :symbol
)

但我得到这个错误:无法将 Hash 转换为 Integer

我只是看不出哪里出了问题。我已经检查了文档,但它说你可以像这样传递编码,但它确实需要文件作为第一个参数,所以它可能会在那里停滞但肯定因为它已经知道正在读取的文件应该没问题。

我该如何解决这个问题?

更新:

我已经更新到以下内容:

def import
if params[:import_coasters]
file = params[:import_coasters][:file]
Park.import_from_csv(file)


def self.import_from_csv(file)
Park.destroy_all

  csv_file = CSV.parse(
File.read(file, {encoding: 'UTF-8'}),
headers: true,
header_converters: :symbol
)

但是我得到以下错误:

无法将 ActionDispatch::Http::UploadedFile 转换成字符串

最佳答案

你很接近。试试这个:

# Step 1: convert the uploaded file object to a file name
uploaded_file = params[:import_coasters][:file]
file_name = uploaded_file.path

# Step 2: To get the input text and see if it's what you expect
text = File.read(
file_name,
{encoding: 'UTF-8'}
)

# Parse the text
csv_file = CSV.parse(
text,
headers: true,
header_converters: :symbol
)

来自 IO.read 上的 Ruby 1.9.3 文档:

“如果最后一个参数是散列,它指定内部 open() 的选项。关键如下。open_args:对其他人是独占的。”

http://www.ruby-doc.org/core-1.9.3/IO.html#method-c-read

此外,请查看 UploadedFile 的文档,因为它实际上不是典型的 Ruby File 对象:

http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html

关于ruby-on-rails - CSV 导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com