【问题标题】:Calling def in Ruby for exporting CSV在 Ruby 中调用 def 以导出 CSV
【发布时间】:2010-11-03 07:34:00
【问题描述】:

我目前有一些代码用于从我拥有的数据中导出表格

require 'fastercsv'
def dump_csv
  @users = User.find(:all, :order => "lastname ASC")
  @outfile = "members_" + Time.now.strftime("%m-%d-%Y") + ".csv"

  csv_data = FasterCSV.generate do |csv|
    csv << [
    "Last Name",
    "First Name",
    "Username",
    "Email",
    "Company",
    "Phone",
    "Fax",
    "Address",
    "City",
    "State",
    "Zip Code"
    ]
    @users.each do |user|
      csv << [
      user.lastname,
      user.firstname,
      user.username,
      user.email,
      user.company,
      user.phone,
      user.fax,
      user.address + " " + user.cb_addresstwo,
      user.city,
      user.state,
      user.zip
      ]
    end
  end

  send_data csv_data,
    :type => 'text/csv; charset=iso-8859-1; header=present',
    :disposition => "attachment; filename=#{@outfile}"

  flash[:notice] = "Export complete!"
end

我的问题是如何从我的角度来称呼它,这是否适用于 will_pagination。我知道 FasterCVS 使用 ActiveRecord 创建表格,因此在尝试组织表格时 will_paginiation 不会有任何用处。

【问题讨论】:

    标签: ruby-on-rails ruby fastercsv function


    【解决方案1】:

    我不明白你为什么说 will_paginate...

    但是如果你想从控制器发送数据或发送文件,你应该看看方法 send_data 和 send_file :

    http://api.rubyonrails.org/classes/ActionController/Streaming.html

    【讨论】:

      【解决方案2】:

      感谢您的帮助。我看到了你的链接并想出了这个:

      @lists = Project.find(:all, :order=> (params[:sort] + ' ' + params[:direction]), :conditions =>  ["name || description  LIKE ?", "%#{params[:selection]}%"])
      
          csv_string = FasterCSV.generate 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多