sheatsb (owner)

Fork Of

gist: 158427 by bcalloway Use FasterCSV to export an ...

Revisions

gist: 184819 Download_button fork
public
Public Clone URL: git://gist.github.com/184819.git
Embed All Files: show embed
rails-export-csv.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
### /config/environment.rb
config.gem 'fastercsv'
 
### /config/routes.rb
map.connect '/users/export', :controller => 'users', :action => 'export'
 
### /app/models/user.rb
# find all students and pass to controller export action for export to csv
def self.find_students
  find_by_sql("select students.firstname, students.lastname, students.grade, students.homeroom, students.phone, students.email, students.relationship, users.firstname, users.lastname, accounts.school from students, users, accounts where students.user_id = users.id and accounts.id = users.account_id")
end
 
### /app/controllers/users_controller.rb
# export students as csv file
def export_students
  @students = User.find_students
  
  students_csv = FasterCSV.generate do |csv|
    # header row
    csv << ["Firstname", "Lastname", "Grade", "Homeroom", "Phone", "Email", "Parent Relationship", "Parent Firstname", "Parent Lastname", "School"]
 
    # data rows
    @students.each do |student|
      csv << [student.firstname, student.lastname, student.grade, student.homeroom, student.phone, student.email, student.relationship, student.firstname, student.lastname, student.school]
    end
  end
   
  send_data(students_csv, :type => 'text/csv', :filename => 'schoollife360_students.csv')
end
 
### view
= link_to 'Export Contacts', '/users/export'