Rails3 CSV put"" 而不是实际的报价

Nic*_*oul 4 csv fastercsv html-safe ruby-on-rails-3

类似于这个问题,除了我不在html_safe整个项目的任何地方使用.

我生成一个CSV文件,index.csv.erb如下所示:

<%=
response.content_type = 'application/octet-stream'
CSV.generate do |csv|
  @persons.each do |person|
    csv << [ person[:name], person[:nickname] ]
  end
end
%>
Run Code Online (Sandbox Code Playgroud)

问题:如果数据库中的昵称为NULL(ActiveRecord/MySQL),则CSV文件关联元素变为&quot;&quot;.我希望"",甚至一无所获.

结果文件示例:

Nicolas, Nico
Joe, &quot;&quot;
Run Code Online (Sandbox Code Playgroud)

我怎样才能防止这种情况发生?

Ben*_*ret 14

这里的问题是你没有使用html_safe.你的昵称字段是空白的,并转换为""csv文件,但Rails和html转义被认为是不安全的.

只需调用html_safe结果:

<%=
response.content_type = 'application/octet-stream'
CSV.generate do |csv|
  @persons.each do |person|
    csv << [ person[:name], person[:nickname] ]
  end
end .html_safe
%>
Run Code Online (Sandbox Code Playgroud)

您链接到的解决方案不再适用于Rails 3,因为默认情况下所有字符串都被认为是不安全的,而Rails 2中并非如此.