【Rails】CSV 내보내기 기능 구현

6441 단어 CSV루비Rails

목표





개발 환경



· Ruby : 2.5.7
·Rails: 5.2.4
·Vagrant: 2.2.7
· VirtualBox : 6.1
· OS : macOS Catalina

전제



하기 실장 완료.

· Slim 도입
· Bootstrap3 도입
· 게시 기능 구현

구현



1. application.rb 편집



application.rb
require_relative 'boot'

require 'rails/all'
require 'csv' # 追記

Bundler.require(*Rails.groups)

module Bookers2Debug
  class Application < Rails::Application
    config.load_defaults 5.2
  end
end

2. 컨트롤러 편집



books_controller.rb
def index
  @book = Book.new
  @books = Book.all
  # 追記
  respond_to do |format|
    format.html
    format.csv do |csv|
      send_users_csv(@books)
    end
  end
end

# 追記
def send_users_csv(books)
  csv_data = CSV.generate do |csv|
    header = %w(ID 登録日 投稿者 タイトル)
    csv << header
    books.each do |book|
      values = [book.id, book.created_at, book.user.name, book.title]
      csv << values
    end
  end
  send_data(csv_data, filename: '本一覧情報')
end

① CSV 파일의 헤더를 설정한다.


header = %w(ID 登録日 投稿者 タイトル)
csv << header

② CSV 파일의 내용을 설정한다.


books.each do |book|
  values = [book.id, book.created_at, book.user.name, book.title]
  csv << values
end

③ CSV 파일명을 설정한다.


filename: '本一覧情報'

3. 뷰를 편집합니다.



books/index.html.slim
/ 追記
= link_to 'CSVエクスポート', books_path(format: :csv), class: 'btn btn-success'

좋은 웹페이지 즐겨찾기