rails 3.1生成CSV文件

cti*_*y79 7 csv ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

在index.html.erb中

<%= link_to "Export to csv", request.parameters.merge({:format => :csv})%>
Run Code Online (Sandbox Code Playgroud)

在index.csv.erb中

<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @customers.each do |n| -%>
<%- row = [ n.id, n.fname ] -%>
<%= CSV.generate_line row %>
<%- end -%>
Run Code Online (Sandbox Code Playgroud)

Tob*_*obi 9

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 -%>
Run Code Online (Sandbox Code Playgroud)

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


cti*_*y79 6

这就是修复它的原因.

<%= CSV.generate_line row, :row_sep => ?\t, :quote_char => ?\ %>
Run Code Online (Sandbox Code Playgroud)