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
33
34
35
36
37
38
39
40
|
# File 'app/controllers/cms/feedback_forms_controller.rb', line 8
def render_csv(objects)
columns = {}
rows = []
objects.each do |obj|
next if obj.feedback_content.blank?
row = YAML.load(obj.feedback_content)
next if row.blank?
rows << row
row['user_agent'] = obj.user_agent
row['ip_address'] = obj.ip_address
row.keys.each do |column|
columns[column] = 1
end
end
csv_output = ''
sorted_columns = columns.keys.sort
CSV::Writer.generate(csv_output) do |csv|
csv << sorted_columns
rows.each do |row|
row_array = []
sorted_columns.each do |col|
row_array << row[col] || ''
end
csv << row_array
end
end
send_data(csv_output,
:type => 'application/octet-stream',
:filename => "feedback-submissions-#{Time.now.to_s(:number)}.csv")
end
|