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。
希望能帮助其他人挣扎