- 首先,确保在Gemfile中已经添加了以下两个gem:carrierwave和fog。
- 确认您已经安装并配置了Amazon S3,并且已经设置了正确的访问密钥和密钥ID。
- 在Rails应用程序中,打开您的Uploader类并配置您的存储服务和路径。以下是一个例子:
class CsvUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def fog_directory
ENV['S3_BUCKET_NAME']
end
def fog_public
false
end
end
- 现在上传一个CSV文件,您可以在表格中使用它。以下是一个例子:
# 在控制器中
class RecordsController < ApplicationController
def index
@records = Record.all
respond_to do |format|
format.html
format.csv { send_data @records.to_csv }
end
end
end
# 在模型中
class Record < ApplicationRecord
belongs_to :user
def self.to_csv
attributes = %w{id name email}
CSV.generate(headers: true) do |csv|
csv << attributes
all.each do |record|
csv << attributes.map{ |attr| record.send(attr) }
end
end
end
end
- 最后一步是在视图或表格中呈现CSV文件,您可以使用以下代码:
<%= link_to 'Download CSV', records_path(format: :csv) %>
现在您应该可以在浏览器中打开并查看上传到Amazon S3的CSV文件。