Я загружаю кучу CSV, чтобы выгрузить их в один большой CSV для экспорта.Я использую Selenium / Ruby / Ruby-on-rails (?) Для достижения этой цели.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я получаю
NoMethodError: undefined method `map' for true:TrueClass
Did you mean? tap
для следующего кода:
def csv_creation(source)
l_source = {'lead_source' => source.to_s}
input_file = Dir.glob("path_to_file/name_of_files*.csv").last
rows = CSV.open(input_file, headers: true).map(&:to_h)
rows.each { |h| h.merge!(l_source) }
headers = rows.first.keys
rows.first.keys.each { |k| puts k }
csv_response = CSV.generate do |csv|
csv << headers
rows.each do |row|
csv << row.values_at(*headers)
end
end
File.open("#{source}.csv", "w") { |file| file.write(csv_response) }
input_files = Dir.glob("#{source}*.csv")
all_headers = input_files.reduce([]) do |all_header, file|
header_line = File.open(file, &:gets)
all_headers | CSV.parse_line(header_line)
end
CSV.open("out.csv", "a+") do |out|
out << all_headers
input_files.each do |file|
CSV.foreach(file, headers: true) do |row|
out << all_headers.map{ |header| row[header] }
end
end
end
end
Прежде чем мне сказали, что я должен был запустить это на рельсах c и добавить модуль, этот код работал.У меня нет опыта работы с Ruby или RoR, но очевидно, что этот сдвиг нарушил мой код.
Случайные лакомые кусочки:
«источник» содержит текст, собранный из выпадающего меню
Данный модуль был построен моей принимающей компанией, поэтому я не совсем уверен, что в нем содержится - извините.
Rails c не работаетЯ действительно не могу дать мне номер строки, где происходит эта ошибка, но я думаю, что это происходит на второй «карте», поэтому я распечатал некоторые строки, чтобы увидеть, было ли что-то не так, но ничего не было.Это откуда-то получает «истинное» значение, и я, честно говоря, не знаю, где.Все должно быть строкой.
Некоторое понимание будет оценено.