rails 3.1生成CSV文件

我能够将表数据导出到CSV文件,但每条记录后都有一个空行。 为什么以及如何修复它?

在index.html.erb中

 :csv})%> 

在index.csv.erb中

       

CSV.generate_line在它生成的行的末尾添加一个新行字符,但<%= %>也是如此,所以你得到两个新行。

要从erb表达式输出中抑制换行符,请使用以下语法: <%= -%>

所以:

 <%- headers = ["Id", "Name"] -%> <%= CSV.generate_line headers -%> <%- @customers.each do |n| -%> <%- row = [ n.id, n.fname ] -%> <%= CSV.generate_line row -%> <%- end -%> 

接受的答案留在erb生成的新行中但是从CSV.generate_line抑制了新行,我认为这不是最好的方法。

这就是修复它的原因。

 <%= CSV.generate_line row, :row_sep => ?\t, :quote_char => ?\ %> 

对于我使用strip和html_safe工作后,在生成行后应用:

 <%- headers = ["Id", "Tour No"] -%> <%= CSV.generate_line(headers).strip%> <%- @tours.each do |t| -%> <%- row = [ t.id,t.tour_no] -%> <%= CSV.generate_line(row).html_safe.strip%> <%- end -%> 

试试这个:

 row = [ n.id, n.fname.strip ] 

strip将删除\ r和/或\ n,这可能会导致空行。 我没有任何其他解释你的源代码是好的!

我以为我会用我的解决方案来解决这个问题。

基本上在我的本地机器(Mac)上一切都工作得很好,然后当我将我的应用程序部署到heroku时,它会开始添加这些神秘的新行。

对我来说,解决方案是使用:

 CSV.generate_line(row, row_step: ?\r).html_safe 

请注意,我使用的是rails 4.1.6。

希望能帮助其他人挣扎