Rails4 ヘッダのみのCSVファイルをダウンロードする
CSVファイル読み込みのテンプレートファイルとして、ヘッダのみ記載されたCSVファイルのダウンロードをしたかった。
CSV出力の情報は多かったが、ヘッダのみの情報が少なくてちょっとつまずいたのでメモ。
モデルにメソッド追加
# CSV読み込みのテンプレートデータ作成 def csv_template headers = ["ユーザーアカウント", "パスワード", "パスワード(確認)", "氏名", "所属"] csv_data = CSV.generate(headers: headers, write_headers: true, force_quotes: true) do |csv| csv << [] end csv_data.encode(Encoding::SJIS) end
csvに空のデータを入れないと、ヘッダのみ出力することはできません。
ルーティングの設定
resources :users do collection do get 'template' end
コントローラ追加
# CSVテンプレート def template respond_to do |format| format.csv{ send_data User.csv_template, type: 'text/csv; charset=shift_jis', filename: "users.csv" } end end
ビューにリンクを貼る
<%= link_to 'CSVテンプレート', template_users_path(format: 'csv') %>