Ruby on Rails CSV put"" 而不是实际的报价

我正在尝试生成CSV文件。 一切都很好,除了空白字段,我不太确定"" 而不是实际的报价。 我提供了用于生成文件和一些输出的代码。

     <% row < <% row < <% row <   

产量

 Username,Name,E-mail,Phone Number admin,LocalShopper ,shoplocally1@gmail.com,"" Brian,Oliveri Design ,brian@oliveridesign.com,727-537-9617 LocalShopperJenn,Jennifer M Gentile ,localshopperjenn@hotmail.com,"" 

而不是在数组的每个部分上调用html_safe,然后从中generate_line一个新的(非html安全的)字符串,尝试在从generate_line返回字符串后调用它:

 <%= CSV.generate_line(row).html_safe %> 

更新:为了安全起见,您需要确保此模板不是以HTML格式发送到浏览器,而是原始文本/ csv文件。 如果行内容包含任何实际的HTML标记,如 ,则这些标记不会被转义,因为您已将输出声明为“安全”。

如果需要在HTML页面中输出此内容,那么您最好考虑正确转义而不是像这样绕过它。

考虑一下你是否真的需要一个用于生成CSV的html.erb模板。

这是我用过的模板,效果很好:

 <%= response.content_type = 'application/octet-stream' FasterCSV.generate do |csv| csv << @report[:columns] @report[:rows].each do |row| csv << row end end %> 

如果您愿意,可以在控制器内完全执行此操作,并将其呈现为类型:text

如果您将内容按顺序进行处理(在这种情况下是一个简单的@report哈希),在控制器内部比在视图中完成所有繁重的工作,它也会@report