前提・実現したいこと
Ruby 2.4.1
Rails 5.1.2
MacOS Mojave
- user has_many articles
userの情報とarticleの情報をCSVで出力したい。
該当のソースコード
ruby
1app/controllers/users_controller.rb 2 3require 'csv' 4 5class UsersController < ApplicationController 6 before_action :set_user only: :generate_csv 7 8 def generate_csv 9 _folder_path = Pathname.new('/var/hogehogeservice/csv/') + SecureRandom.hex(20) 10 FileUtils.mkdir_p _folder_path 11 _file_path = _folder_path + "#{sprintf('%02d', Date.today.month)}.csv" 12 @max_count = [@user.articles&.size&.compact, 6].compact.max 13 CSV.open 'wb' |csv| 14 csv << [ 15 'ユーザー名', 16 'メールアドレス', 17 '誕生日’, 18 *@max_count.times.map{|i| ["#{i + 1}_タイトル", "#{i + 1}_内容", "#{i + 1}_公開日"]}.flatten 19 ] 20 csv << [ 21 @user.name, 22 @user.email, 23 @user.birthday, 24 @user.articles&.each do |article| 25 article.title, 26 article.content, 27 article.published_at&.strftime('%Y%m%d') 28 ] 29 end 30 31 respond_to do |format| 32 format.csv { send_data _file_path } 33 end 34 35 private 36 def set_user 37 @user = User.find params[:id] 38 end 39 40end 41
上記のコードでは出力できない
> '誕生日’,
の後ろが全角クォートで閉じられていない、とか
renpond_toのendが足りなくてメソッドが閉じてない
みたいな話でしょうか?