Controller
-
respond_to
を使って、hogehoge.com/users
へのリクエストに対してはHTMLを返し、hogehoge.com/users.csv
へのリクエストに対してはCSVを返すようにする -
send_data
、render_to_string
を使ってCSVを返す処理を作成
app/controllers/users_controller.rb
def index
@users = User.all
respond_to do |format|
format.html
format.csv do
send_data render_to_string, filename: 'user-list.csv', type: :csv
end
end
end
View
-
hogehoge.com/users.csv
へのリンクを作成
app/views/users/index.html.erb
<%= link_to 'CSVダウンロード' users_path(format: :csv) %>
CSV
-
CSV.generate
で、カンマ区切りの文字列を生成
app/views/users/index.csv.ruby
require 'csv' # ruby/csvのgemが入っていればこの記述は不要
CSV.generate do |csv|
csv << %w(id 名前 年齢)
@users.each do |user|
csv << [user.id, user.name, user.age]
end
end
参考