Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分析Rails 3.2 Ruby 2中的CSV头时出错_Ruby_Ruby On Rails 3 - Fatal编程技术网

分析Rails 3.2 Ruby 2中的CSV头时出错

分析Rails 3.2 Ruby 2中的CSV头时出错,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我们去年在使用ruby 1.9.3和Rails 3.0时运行了这段代码,没有出现任何问题,但在升级之后,我们现在需要在今年再次运行它,但它失败了 导入CSV文件时,错误似乎与解析标题有关。代码是 ROOT_DIR = File.expand_path File.dirname(__FILE__) csv_file = ROOT_DIR + '/holidays_2016.csv' csv = CSV.read(csv_file, headers: true) 返回的错误是 output err

我们去年在使用ruby 1.9.3和Rails 3.0时运行了这段代码,没有出现任何问题,但在升级之后,我们现在需要在今年再次运行它,但它失败了

导入CSV文件时,错误似乎与解析标题有关。代码是

ROOT_DIR = File.expand_path File.dirname(__FILE__)
csv_file = ROOT_DIR + '/holidays_2016.csv'
csv = CSV.read(csv_file, headers: true)
返回的错误是

output error: #<NoMethodError: undefined method `table' for #<Object:0x007f82898e15a8>>
删除Header:true选项修复了这个问题,但我确实需要这些Header,因为它们将在代码的后面使用

尝试使用return\u头:true

从:

:标题 如果设置为:first_row或true,CSV文件的初始行将被视为一行标题。如果设置为数组,则内容将用作标题。如果设置为字符串,则通过调用::parse_line运行该字符串,并使用与此实例相同的:col_sep、:row_sep和:quote_char生成一个头数组。此设置使shift以CSV::Row对象而不是数组的形式返回行,并使read返回CSV::Table对象而不是数组数组

:返回页眉 如果为false,则头行将被默默地吞没。如果设置为true,则在CSV::Row对象中返回具有相同标题和字段的标题行,但字段不经过转换器


旁注:CSV.read需要散列作为选项参数,而不是命名参数。这可能是因为默认设置,而不是因为您的代码似乎没有bug。看一看。CSV.readcsv_文件,{headers:true}应该可以解决您的问题。还是一样的问题。在去年的文件上运行代码,它工作正常,现在也报告了同样的错误。哦,我被选项名缠住了,对不起。它应该是CSV.readcsv_文件,当然是{return_headers:true}。