从ajax我在我的控制器中调用我的导出动作
def export
data_filtered = eval(params[:data_filtered][9..-2])
CSV.open("data.csv", "wb") do |csv|
csv << data_filtered.first.keys
data_filtered.each do |hash|
csv << hash.values
end
end
end
目前这确实在我的计算机上创建了一个名为data.csv的文件,但它没有显示任何实际上这样做的证据。我希望浏览器下载该文件,并显示在浏览器下载和我的下载文件夹中。
编辑:
def export
data_filtered = eval(params[:data_filtered][9..-2])
csv_file = CSV.generate({}) do |csv|
csv << data_filtered.first.keys
data_filtered.each do |hash|
csv << hash.values
end
end
send_data csv_file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=tester1.csv"
端
答案 0 :(得分:0)
您需要设置标头以指示浏览器应对结果文件执行的操作。
send_data file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment;data=#{csv_file}.csv"
但是,必须先将其写入服务器,然后再下载。您可能会发现此答案有用:Ruby 1.9.2 export a CSV string without generating a file
答案 1 :(得分:0)