首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改FasterCSV的输出

更改FasterCSV的输出
EN

Stack Overflow用户
提问于 2010-11-12 17:20:05
回答 1查看 460关注 0票数 1

我目前有一个控制器,它将处理使用FasterCSV gem将表导出到CSV文件的调用。问题是存储在数据库中的信息有时不清楚,所以我想更改特定列的输出。

例如,我的project.status列具有数字而不是状态,即数据库中的1对应于活动,2对应于非活动,0对应于尚未决定。当我导出表时,它显示0,1,2,而不是活动的,非活动的或尚未决定的。你知道怎么实现这个吗?

我尝试了一个简单的循环,它将检查最终生成的CSV文件,并将每个0,1,2更改为其相应的输出,但问题是每隔一列包含0,1,2也会更改。我不知道如何隔离柱子。提前感谢

代码语言:javascript
复制
 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-12 19:45:31

这实际上相当简单。在您的控制器代码中:

代码语言:javascript
复制
  #app/controllers/projects_controller.rb#csv
  @lists.each do |project|
          csv << [project.descriptive_status, project.name, project.summary, project.description, project.creator, project.statusreason, project.contactinfo, project.created_at, project.updated_at]
  end

然后在你的模型代码中。不过,您可能已经有一个方法可以将DB状态解码为更具描述性的状态:

代码语言:javascript
复制
#app/models/project.rb

ACTIVE_STATUS = 0
INACTIVE_STATUS = 1
NOT_YET_DECIDED_STATUS = 2

def descriptive_status
  case status
    when ACTIVE_STATUS
      "Active"
    when INACTIVE_STATUS
      "Inactive"
    when NOT_YET_DECIDED_STATUS
      "Not Yet Decided"
  end
end

可能有许多方法可以重构这一点。至少在控制器中,最好使该查找器成为一个更具描述性的命名作用域。模型中的常量可以引入到SettingsLogic配置或其他类似的gem中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4163118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档