2010-11-03 25 views
0

目前,我有一些代码,IV用于将表从数据导出我在调用红宝石高清导出CSV

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在试图组织表时不会有任何用处。

回答

0

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

@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