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)
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,我认为这不是最好的方法.
这就是修复它的原因.
<%= CSV.generate_line row, :row_sep => ?\t, :quote_char => ?\ %>
Run Code Online (Sandbox Code Playgroud)