【发布时间】:2011-01-03 21:49:07
【问题描述】:
我想让我的用户能够将表格导出为 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.
【问题讨论】:
-
this SO thread中关于这个话题的一些很好的讨论
标签: ruby-on-rails csv