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') %>


参考:
railsにCSV形式でのダウンロード機能を追加する | dev.wan.co