ruby-on-rails – Rails – CSV导出:提示文件下载
发布时间:2020-12-16 20:08:17 所属栏目:百科 来源:网络整理
导读:我想让我的用户能够将表导出到CSV. 所以在我的控制器中,我添加了这个文件: respond_to :html,:js,:csv 如果所请求的格式是csv,我也设置标题: if params[:format] == 'csv' generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}") end gener
我想让我的用户能够将表导出到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. 解决方法
我仍然不确定为什么这会解决这个问题,但是它确实如此.
我改变了视图中的链接 <%= link_to "Export to csv",request.parameters.merge({:format => :csv})%> 现在工作! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |