this question 类似,但我不在整个项目的任何地方使用 html_safe

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

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

问题:如果数据库 (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 并非如此。

关于ruby-on-rails-3 - Rails CSV 将 ""而不是实际引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7358509/

10-12 12:49
查看更多