現在、タイムカードのcsvエクスポートを作成しております。
エクスポート自体は出来たので、worked_on(日付)、started_at(出勤),finished_at(退勤)の表記を
変更しようと、strftime(ブラウザに表示するフォーマット)を加えたところ、下記のようなエラーが出ました。
試しに、strftimeをworked_on(日付)のみにしたところエクスポートは成功しますので、
日付は必ず存在するが、出勤&退勤は存在しない日(nil)もあるので、strftimeで変換出来ないのではと考えました。
*↓これなら、エクスポートは出来ますが、時刻の表記が「2020-09-24 11:45:00 +0900」の様になる*
ruby
1CSV.generate(encoding: Encoding::SJIS, write_headers: true, force_quotes: true) do |csv| 2 csv_headers = ["日付", "出社", "退社","備考"] 3 csv << csv_headers 4 @attendances.each do |day| 5 values = [ 6 day.worked_on.strftime('%m/%d'), 7 day.started_at, 8 day.finished_at, 9 day.note 10 ] 11 csv << values 12 end 13 end
方法としては、ifを使い、
「day.started_atが存在すれば.strftime('%h:%m')の表記で出力。nilなら空白を出力(day.started_at day.finished_atの両パターンを作成)」を記載すれば良いかなと考えましたが、
どのようなコードを記載すれば良いかがわかりません。
お手数おかけしますが、教えていただけると幸いです。
○実現したい事→エラーを解決し、時間をフォーマット表示でCSVエクスポートを出力したい
○現状→undefined method `strftime' for nil:NilClassのエラーが出る
○試した事→日付のみなら出るので、条件分岐にて表記すれば良いのではと考えるがコードがわからず
宜しくお願い申し上げます
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 05:42