LoginSignup
0

More than 1 year has passed since last update.

【Rails】CSVダウンロード機能を実装

Last updated at Posted at 2022-02-02

Controller

  • respond_toを使って、hogehoge.com/usersへのリクエストに対してはHTMLを返し、hogehoge.com/users.csvへのリクエストに対してはCSVを返すようにする
  • send_datarender_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

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0