這用於輸出列表中每個人的文檔。但是,由於我添加了代碼來確定給定日期列表中最受歡迎的日期時間&,因此它現在僅爲列表中的第一個人輸出一個文檔。爲什麼它輸出一個文件,當它用於輸出多個?
def save_thank_you_letters(id,form_letter)
Dir.mkdir("output") unless Dir.exists?("output")
filename = "output/thanks_#{id}.html"
File.open(filename,'w') do |file|
file.puts form_letter
end
end
puts "EventManager initialized."
contents = CSV.open 'event_attendees.csv', headers: true, header_converters: :symbol
template_letter = File.read "form_letter.erb"
erb_template = ERB.new template_letter
contents.each do |row|
id = row[0]
name = row[:first_name]
zipcode = clean_zipcode(row[:zipcode])
phone = clean_phonenumber(row[:homephone])
legislators = legislators_by_zipcode(zipcode)
form_letter = erb_template.result(binding)
save_thank_you_letters(id,form_letter)
# IT WORKS OK UNTIL I ADD THIS PART...
times = contents.map { |row| row[:regdate] }
target_times = Hash[times.group_by do |t|
DateTime.strptime(t, '%m/%d/%y %H:%M').hour
end.map do |k,v|
[k, v.count]
end.sort_by do |k,v|
v
end.reverse]
target_days = Hash[times.group_by do |t|
DateTime.strptime(t, '%m/%d/%y %H:%M').wday
end.map do |k,v|
[Date::ABBR_DAYNAMES[k], v.count]
end.sort_by do |k,v|
v
end.reverse]
puts target_times
puts target_days
end
我認爲這與我處理日期/時間數據的方式有關。如果我刪除它,我會爲列表中的每個人獲取一個html文檔。但是,如果我包含它,我會得到我正在查找的日期&時間信息 - 但它僅爲列表中的第一個人生成文檔。
有人能解釋爲什麼我所做的不起作用嗎?我希望它能打印出一週中的時間和日期,但也爲列表中的每個人生成一個html文檔。
謝謝!
? – BroiSatse
@BroiSatse我移動了target_time&target_days,但它似乎仍然不起作用。現在,它不會爲列表中的任何人生成任何文檔。我無法理解是什麼導致了這種衝突。我搬家了:times = contents.map {| row |行[:regdate]} .......放置target_days我將此移至erb_template = ERB.new之後template_letter – Robbie