与 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 文件关联元素变为
""
。我希望 ""
,甚至什么都没有。结果文件示例:
Nicolas, Nico
Joe, ""
我怎样才能防止这种情况发生?
最佳答案
这里的问题是您没有使用 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/