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' はやらない。
- http://github.com/arydjmal/to_csv/tree/master/lib/ は初心者のコードリーディングに最適だと思う。