oharato
9/10/2015 - 3:23 PM

Rails4で簡単CSVダウンロード ref: http://qiita.com/oharato/items/414b7e5a61034bf8311c

Rails4で簡単CSVダウンロード ref: http://qiita.com/oharato/items/414b7e5a61034bf8311c

# 抜粋です。scaffold直後から変更なし。respond_toかかなくてもOK
class UsersController < ApplicationController
  def index
    @users = User.all
    respond_to do |format|
      format.html
      format.csv do
        filename = 'users'
        headers['Content-Disposition'] = "attachment; filename=\"#{filename}.csv\""
      end
    end
  end  end
end
# お好きなところにリンクをどうぞ。
<%= link_to 'csv download', users_path(format: :csv) %>
require 'kconv'
columns = [:name, :email]
res = ""
res << columns.map{|c| User.human_attribute_name c }.join(',')+"\r" # header
@users.pluck(*columns).each do |u|
  res << u.join(',')+"\r" # body
end
res.tosjis

# もしくは
require 'kconv'
require 'csv'
columns = [:name, :email]
CSV.generate do |csv|
  csv << columns.map{|c| User.human_attribute_name c } # header
  @users.pluck(*columns).each{|u| csv << u } # body
end.tosjis
require 'kconv'
columns = [:name, :email]
res = ""
res << columns.map{|c| User.human_attribute_name c }.join(',')+"\r"
@users.pluck(*columns).each do |u|
  res << u.join(',')+"\r"
end
res.tosjis

# もしくは
require 'kconv'
require 'csv'
columns = [:name, :email]
CSV.generate do |csv|
  csv << columns.map{|c| User.human_attribute_name c }
  @users.pluck(*columns).each{|u| csv << u }
end.tosjis