質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

date

dateは、date型や日付に関する関数や処理についてのタグです

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

1回答

2822閲覧

link_toでパラメータが送れない

koh-s

総合スコア9

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

date

dateは、date型や日付に関する関数や処理についてのタグです

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

0クリップ

投稿2020/04/06 13:33

編集2020/04/06 13:34

当月、翌月ならびに前月などページ遷移によって表示月を変えられる勤怠システムの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> 34/* 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> 910いづれも、下記のように返されてしまう。 11params[:key] 12=> nil

お忙しい中、大変申し訳ございませんが何かヒントなどいただけますと幸いでございます。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

link_to "CSV出力", csv_output_attendances_path(format: :csv), date: :@first_day, class: "btn btn-primary"のような引数指定だと、date:link_toの属性設定用の引数だとみなされます。

URL生成のヘルパーの中に引数を書いて、csv_output_attendances_path(format: :csv, date: :@first_day)のようにしてください。

投稿2020/04/06 13:43

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koh-s

2020/04/10 17:32

お返事が遅れてしまい、申し訳ございません。 いただきましたご回答のとおり試みましたところ、実装することができました。 とても勉強になります。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問