这用于输出列表中每个人的文档。但是,由于我添加了代码来确定给定日期列表中最受欢迎的日期时间&,因此它现在仅为列表中的第一个人输出一个文档。为什么它输出一个文件,当它用于输出多个?
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