ruby-on-rails – Rails – CSV导出:提示文件下载

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails – CSV导出:提示文件下载前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想让我的用户能够将表导出到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})%>

现在工作!

猜你在找的Ruby相关文章