複数のドキュメントを出力していたのに、なぜ1つのドキュメントを出力するのですか?

ロビー

これは、リストの各人のドキュメントを出力するために使用されていました。ただし、特定の日付のリストで最も人気のある日時を決定するコードを追加したため、リストの最初の人に対して1つのドキュメントのみが出力されるようになりました。

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

CSVファイルを読み取るときは、内部ポインタを移動して1行ずつ読み取ります。ファイルの終わりに達すると、このポインタはそこにとどまるので、新しい行をフェッチしようとするたびに、ファイルを巻き戻さない限り、nilになります。したがって、コードは次の行で反復を開始しました。

contents.each do |row|

これにより、最初の行がフェッチされ、カーソルが次の行に移動しました。ただし、ループ内では、contents.map {...}csvファイル全体を読み取り、ファイルの最後に呪いを残しました。したがって、これを修正するには、統計ビットをループの外側(ループの前または後)に移動し、2回目の反復の前にファイルを巻き戻す(カーソルをリセットする)必要があります。

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)

end

contents.rewind
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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MongoDBで複数のドキュメントを1つのドキュメントに変換する

分類Dev

複数の出力ドキュメント:結果ドキュメントから元のドキュメントを参照できますか?

分類Dev

spacyドキュメント類似性関数を使用して、データセット内の1つのドキュメントを他のすべてのドキュメントと比較するにはどうすればよいですか?

分類Dev

json.dumpを使用して複数の配列を1つのドキュメントにダンプするにはどうすればよいですか?

分類Dev

2つのドキュメントがありますが、出力を1つのドキュメントとして返すクエリを作成するにはどうすればよいですか。

分類Dev

XSLT:1つのドキュメントから別のドキュメントにIDを割り当て、複数の同じ値を繰り返します

分類Dev

cakephpを使用して1つのドキュメントに複数のExcelシートを生成する方法

分類Dev

C#複数のXMLNodeまたはXMLNodeListを1つのXMLドキュメントから別のXMLドキュメントにコピーする

分類Dev

Mongooseでサブドキュメントをクエリしているときにドキュメントが返されないのはなぜですか?

分類Dev

作成者1人あたりのドキュメント数をディレクトリに出力する方法

分類Dev

複数のMigraDocドキュメントを1つに連結する方法

分類Dev

Mongooseで複数のドキュメントを保存し、最後のドキュメントが保存されたときに何かを実行する

分類Dev

MongoDB-集約パイプラインを使用して、複数の入力ドキュメントを1つの出力ドキュメントに結合します

分類Dev

ドキュメント管理:複数のドキュメントの個々の部分を選択して、新しいWordドキュメントを作成します

分類Dev

正しいページ番号で複数のワークシートを1つのドキュメントに印刷する方法はありますか?

分類Dev

CDNが特定のドキュメントをキャッシュするのに、ブラウザがキャッシュしないのはなぜですか?

分類Dev

形成と色の出力を使用してドキュメントを表示する

分類Dev

形成と色の出力を使用してドキュメントを表示する

分類Dev

投影に含まれていないドキュメントを取得するのはなぜですか?

分類Dev

Firestoreは、1つのクエリを使用して、条件に一致する複数のドキュメントを更新できますか?

分類Dev

複雑なドキュメントテキストをVueの入力変数として使用するにはどうすればよいですか?

分類Dev

Logstash:2つのログを1つの出力ドキュメントにマージします

分類Dev

HTMLドキュメントから変数を保存して別のドキュメントに表示する

分類Dev

ドキュメントのIDを知らなくても、子を持つプロパティを複数のドキュメントで検索する方法

分類Dev

2つの重複するドキュメントで「追加された」ドキュメントプロパティが異なるのはなぜですか?

分類Dev

findOneAndUpdate()がドキュメントを更新しないのはなぜですか?

分類Dev

正しい出力のために、2つのオペランドを持つステートメントが1つのオペランドを持つステートメントの上にある必要があるのはなぜですか?

分類Dev

MongoDB地理空間で、複数のポイントドキュメントではなく、単一のラインドキュメントとして、独自の「時間」を持つ複数のポイントを含むラインを作成できますか?

分類Dev

IText5またはIText7を使用して、AcroFormフィールドを1つのドキュメントから新しい空白のドキュメントにコピー/移動するにはどうすればよいですか?

Related 関連記事

  1. 1

    MongoDBで複数のドキュメントを1つのドキュメントに変換する

  2. 2

    複数の出力ドキュメント:結果ドキュメントから元のドキュメントを参照できますか?

  3. 3

    spacyドキュメント類似性関数を使用して、データセット内の1つのドキュメントを他のすべてのドキュメントと比較するにはどうすればよいですか?

  4. 4

    json.dumpを使用して複数の配列を1つのドキュメントにダンプするにはどうすればよいですか?

  5. 5

    2つのドキュメントがありますが、出力を1つのドキュメントとして返すクエリを作成するにはどうすればよいですか。

  6. 6

    XSLT:1つのドキュメントから別のドキュメントにIDを割り当て、複数の同じ値を繰り返します

  7. 7

    cakephpを使用して1つのドキュメントに複数のExcelシートを生成する方法

  8. 8

    C#複数のXMLNodeまたはXMLNodeListを1つのXMLドキュメントから別のXMLドキュメントにコピーする

  9. 9

    Mongooseでサブドキュメントをクエリしているときにドキュメントが返されないのはなぜですか?

  10. 10

    作成者1人あたりのドキュメント数をディレクトリに出力する方法

  11. 11

    複数のMigraDocドキュメントを1つに連結する方法

  12. 12

    Mongooseで複数のドキュメントを保存し、最後のドキュメントが保存されたときに何かを実行する

  13. 13

    MongoDB-集約パイプラインを使用して、複数の入力ドキュメントを1つの出力ドキュメントに結合します

  14. 14

    ドキュメント管理:複数のドキュメントの個々の部分を選択して、新しいWordドキュメントを作成します

  15. 15

    正しいページ番号で複数のワークシートを1つのドキュメントに印刷する方法はありますか?

  16. 16

    CDNが特定のドキュメントをキャッシュするのに、ブラウザがキャッシュしないのはなぜですか?

  17. 17

    形成と色の出力を使用してドキュメントを表示する

  18. 18

    形成と色の出力を使用してドキュメントを表示する

  19. 19

    投影に含まれていないドキュメントを取得するのはなぜですか?

  20. 20

    Firestoreは、1つのクエリを使用して、条件に一致する複数のドキュメントを更新できますか?

  21. 21

    複雑なドキュメントテキストをVueの入力変数として使用するにはどうすればよいですか?

  22. 22

    Logstash:2つのログを1つの出力ドキュメントにマージします

  23. 23

    HTMLドキュメントから変数を保存して別のドキュメントに表示する

  24. 24

    ドキュメントのIDを知らなくても、子を持つプロパティを複数のドキュメントで検索する方法

  25. 25

    2つの重複するドキュメントで「追加された」ドキュメントプロパティが異なるのはなぜですか?

  26. 26

    findOneAndUpdate()がドキュメントを更新しないのはなぜですか?

  27. 27

    正しい出力のために、2つのオペランドを持つステートメントが1つのオペランドを持つステートメントの上にある必要があるのはなぜですか?

  28. 28

    MongoDB地理空間で、複数のポイントドキュメントではなく、単一のラインドキュメントとして、独自の「時間」を持つ複数のポイントを含むラインを作成できますか?

  29. 29

    IText5またはIText7を使用して、AcroFormフィールドを1つのドキュメントから新しい空白のドキュメントにコピー/移動するにはどうすればよいですか?

ホットタグ

アーカイブ