我想让我的用户能够将表导出到CSV.
respond_to :html,:js,:csv
如果所请求的格式是csv,我也设置标题:
if params[:format] == 'csv' generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}") end
generate_csv_headers(在application_controller中)的代码是:
def generate_csv_headers(filename) headers.merge!({ 'Cache-Control' => 'must-revalidate,post-check=0,pre-check=0','Content-Type' => 'text/csv','Content-Disposition' => "attachment; filename=\"#{filename}\"",'Content-Transfer-Encoding' => 'binary' }) end
我还创建了一个名为index.csv.erb的视图来生成我的文件:
<%- headers = ["Id","Name"] -%> <%= CSV.generate_line headers %> <%- @negotiations.each do |n| -%> <%- row = [ n.id,n.name ] -%> <%= CSV.generate_line row %> <%- end -%>
我没有任何错误,但它只是显示CSV文件的内容,而我希望从浏览器提示下载文件.
我读了很多,但找不到任何有用的东西.
你有想法吗?
谢谢,p.