1
我該怎麼做:將數據導出到csv。使用fastercsv和CSV :: Writer(Ruby on Rails)導出到csv
我有一個允許用戶選擇格式(從下拉菜單)的形式。所以根據格式的選擇,使用ajax調用來顯示輸出。適用於html,但當我選擇格式爲csv時,屏幕上沒有看到任何彈出窗口(要求保存或打開文件),也沒有任何文件直接下載。
我試過使用Fastercsv(但問題是我沒有看到任何彈出問我是否要保存或打開文件)和CSV :: Writer,我在控制檯上得到這個錯誤信息。使用Fastercsv
NoMethodError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.bytesize):
actionpack (2.3.4) lib/action_controller/streaming.rb:142:in `send_data'
代碼:
def export_to_csv
csv_string = FasterCSV.generate(:col_sep => ",") do |csv|
members = ["Versions/Project Members"]
members_selected.each {|member| members << Stat.member_name(member)}
Stat.project_members(project).each {|user| members << user.name}
csv << ["some text", "text 2", "text 3"]
end
return csv_string
end
,這是怎麼了發送數據:
send_data(export_to_csv,:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment", :filename => "filename.csv")
我看到的響應, 「一些文本,文本2,文本3」在螢火蟲控制檯中,但沒有彈出詢問我是否要保存或打開文件。
這是我使用的CSV做::編劇:
def export_to_csv
report = StringIO.new
CSV::Writer.generate(report, ',') do |csv|
csv << ['c1', 'c2']
end
end
,並稱呼其爲:
send_data(export_to_csv,:type => 'text/csv; charset=iso-8859-1; header=present',
:disposition => "attachment", :filename => "filename.csv")
這是在控制檯上拋出的錯誤:
NoMethodError (You have a nil object when you didn't expect it!
The error occurred while evaluating nil.bytesize):
actionpack (2.3.4) lib/action_controller/streaming.rb:142:in `send_data'