当月、翌月ならびに前月などページ遷移によって表示月を変えられる勤怠システムのCSV出力機能を実装中となります。
前提・実現したいこと
得たい結果としては、表示されている月の1ヶ月分の勤怠情報をcsv出力させたい。
例)
当月(4月)→翌月ページに遷移(5月)
翌月にあたる4月のページをcsvで出力させる。
というようなイメージです。
ruby
1** view ** 2## csv出力のlink_toです 3# date: :@first_day が飛ばされる想定でしたが、飛ばされない状況です。 4<span><%= link_to "CSV出力", csv_output_attendances_path(format: :csv), date: :@first_day, class: "btn btn-primary" %></span></br> 5 6### 補足 7date: :@first_day の @first_day には当月ないし、翌・前月のひと月分のdateがはいっています。 8 9 10** controller ** 11 def csv_output 12 raise 13 user = User.find_by(id: current_user) 14 @first_day = params[:date].to_date 15 @last_day = @first_day.end_of_month 16 @attendances = user.attendances.where(worked_on: @first_day..@last_day).order(:worked_on) 17 send_data render_to_string, filename: "attendances.csv", type: :csv 18 end 19
発生している問題・エラーメッセージ
csv出力をするとparams[:date]
がnil
になっている状況です。
上記のviewコードのうちdate: :@first_day
がlink_toによりcontrollerへ送られる想定で記述していますが、送れない状況です。
※参考にした記事は下記です。
https://qiita.com/geshi/items/449ba1f29f2f10bad4be
試したこと
いくつかパターンを変えてパラメータを送れないか試みましたが、いづれもうまくいかず、行き詰まっています。
ruby
1/* key: @user.idを飛ばす */ 2<span><%= link_to "CSV出力", csv_output_attendances_path(format: :csv), key: @user.id, class: "btn btn-primary" %></span></br> 3 4/* key: @first_dayを飛ばす */ 5<span><%= link_to "CSV出力", csv_output_attendances_path(format: :csv), key: @first_day, class: "btn btn-primary" %></span></br> 6 7/* pathの引数にも入れてみました */ 8<span><%= link_to "CSV出力", csv_output_attendances_path(format: :csv, key: @user.id), class: "btn btn-primary" %></span></br> 9 10いづれも、下記のように返されてしまう。 11params[:key] 12=> nil
お忙しい中、大変申し訳ございませんが何かヒントなどいただけますと幸いでございます。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/10 17:32