Rails3 CSV 用“”代替实际引号

2023-12-26

类似于这个问题 https://stackoverflow.com/questions/3885687/ruby-on-rails-csv-putting-quotquot-instead-of-actual-quotes除非我不使用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
%>

PROBLEM:如果数据库 (ActiveRecord/MySQL) 中的昵称为 NULL,则 CSV 文件关联元素将变为&quot;&quot;。我希望"",或者甚至什么都没有。

结果文件示例:

Nicolas, Nico
Joe, &quot;&quot;

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


这里的问题是你没有使用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
%>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails3 CSV 用“”代替实际引号 的相关文章

随机推荐