我目前有一个控制器,它将处理使用 FasterCSV gem 将表导出到 CSV 文件的调用。问题是存储在数据库中的信息有时不清楚,所以我想更改特定列的输出。
例如,我的 project.status 列有数字而不是状态,即数据库中的 1 对应于活动,2 对应于非活动,0 对应于尚未决定。当我导出表格时,它显示 0、1、2 而不是活动、非活动或尚未决定。知道如何实现吗?
我尝试了一个简单的循环来检查最终生成的 CSV 文件并将每个 0,1,2 更改为其相应的输出,但问题是具有 0,1,2 的每个其他列也会更改。我不确定如何隔离列。提前致谢
def csv
qt = params[:selection]
@lists = Project.find(:all, :order=> (params[:sort] + ' ' + params[:direction]), :conditions => ["name LIKE ? OR description LIKE ?", "%#{qt}%", "%#{qt}%"])
csv_string = FasterCSV.generate(:encoding => 'u') do |csv|
csv << ["Status","Name","Summary","Description","Creator","Comment","Contact Information","Created Date","Updated Date"]
@lists.each do |project|
csv << [project.status, project.name, project.summary, project.description, project.creator, project.statusreason, project.contactinfo, project.created_at, project.updated_at]
end
end
filename = Time.now.strftime("%Y%m%d") + ".csv"
send_data(csv_string,
:type => 'text/csv; charset=UTF-8; header=present',
:filename => filename)
end