Я следовал этому примеру , но у меня проблемы с показом значения nil
в каждой строке (между исходными значениями и дополнительным значением, которое я добавляю.
Вот моя конечная точка контроллера:
def daily_grocery_carts_overview_export
@data = DailyRetailerShop.all.order("start_date ASC")
respond_to do |format|
format.html { redirect_to root_path }
format.csv { send_data @data.to_csv, filename: "DailyGroceryCarts-#{Time.now.strftime("%Y%m%d%H%M%S")}.csv" }
end
end
Вот моя модель:
class DailyRetailerShop < ActiveRecord::Base
def self.to_csv
# generate site abbreviations & name to add to CSV file
site_abbreviations = {}
Partner.all.each do |p|
site_abbreviations[p[:site_abbreviation]] = p[:name]
end
CSV.generate do |csv|
# remove certain columns
export_columns = column_names - %w(id site_abbreviation created_at updated_at)
# add custom column header
headers = export_columns << 'Website'
# add to csv file
csv << headers
all.each do |item|
row = item.attributes.values_at(*export_columns).insert(-1, site_abbreviations[item.site_abbreviation])
csv << row
end
end
end
end
Когда я загружаю файл CSV и открываю его, я вижу пустое значение, за которым следует добавленное пользовательское значениев каждой строке. Если я читаю загруженный файл CSV, вот что я вижу в первых нескольких строках:
data = CSV.read("downloaded_file.csv")
puts data[0..3]
=> [["start_date", "grocery_retailer", "retailer_shops", "Website"], ["2019-10-15", "walmart", "25", nil, "Website1"], ["2019-10-15", "walmart", "24", nil, "Website2"], ["2019-10-15", "instacart", "23", nil, "Website3"]]
Обратите внимание, что для каждой строки есть значение nil
(не в заголовках). Я исключаю свое собственное имя заголовка и затем добавляю значения, как я делал выше, тех значений nil
(пробелы, когда я открываю файл) больше нет.
Таким образом, появляется пользовательский заголовок, создающий nil
значение для каждой строки. Как мне избавиться от этого?