前提・実現したいこと
条件により、CSVエクスポートのフォーマットを切り替えたい。
例えば、
V1.0が指定された場合はv1.0に対応したフォーマット、
v1.1が指定された場合はv1.1に対応したフォーマットでエクスポートするようにしたい。
環境
- ruby 2.6.2
- Rails5.2.3
該当のソースコード
Viewテンプレートを使用する方法で実装しています。
ruby
1# controller 2def index 3 @data = Test.all 4 respond_to do |format| 5 format.csv do 6 send_data render_to_string, filename: "test.csv", type: :csv 7 end 8 end 9end
ruby
1# index.csv.ruby 2CSV.generate("\uFEFF", row_sep: "\r\n") do |csv| 3 # この部分をバージョンごとに切り替えたい(v1.0は項目数3つ、v1.1は項目数4つ、みたいな感じ) 4 cols = { 5 "カラム1" => ->(data){ data.column1 }, 6 "カラム2" => ->(data){ data.column2 }, 7 "カラム3" => ->(data){ data.column3 } 8 } 9 10 # header 11 csv << cols.keys 12 13 # body 14 @data.each do |record| 15 csv << cols.map{|k, col| col.call(record) } 16 end 17end
試したこと
index.csv.ruby を バージョンごとにv1x0.index.csv.ruby、v1x1.index.csv.ruby と分けてみましたが、
それぞれをどう呼び出せばよいかで詰まってしまいました。
使用するViewテンプレートを指定する方法などあるのでしょうか。
何かよい方法をご存じでしたらご教授ください。
どうぞよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。