昔の Ruby On Rails のブログ

注意! RoR2 とかの話です。今は更新していません。昔、はてなダイアリーで書いていたブログを移行しました。

CSV出力のまとめ

コントローラ。format を使うんですね。

  def index
    @projects = Project.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => Project.all }
      format.csv  { send_data NKF.nkf('-sW -Lw', Project.to_csv),
                              :filename => 'projects.csv',
                              :type => 'text/csv; charset=Shift_JIS' }
    end
  end

nkf のオプションで改行コードを意識する。


モデル。ロジックはモデルにしました。

  def self.to_csv
    header = %w(工番 発注先 物件名称 契約日)
    FasterCSV.generate(:headers => header, :write_headers => true) do |csv|
      Project.all.each do |p|
        csv << [p.id,
                p.client,
                p.name,
                p.cont_award]
      end
    end
  end

FasterCSV.generate で :row_sep => '\r\n' はやらない。