【发布时间】:2012-11-12 21:03:20
【问题描述】:
我有这个来解析 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
)
但我收到此错误:无法将哈希转换为整数
我只是看不出有什么问题。我检查了文档,但它说你可以像这样传递编码,但它确实需要文件作为第一个参数,所以它可能会停在那里,但肯定因为它已经知道正在读取什么文件,所以应该没问题。
我该如何解决这个问题?
更新:
我已更新到以下内容:
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 转换为字符串
【问题讨论】:
-
你是如何创建文件变量的?我无法重现您的问题以进行测试。
-
能否请您指出说您可以以这种方式使用#read 的文档
标签: ruby-on-rails ruby csv import