4

プロジェクト全体のどこでも使用しないことを除いて、この質問に似ています。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;

どうすればこれを防ぐことができますか?

4

2 に答える 2

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
%>

リンク先のソリューションは、Rails 2 ではそうではなかったデフォルトですべての文字列が安全でないと見なされるため、Rails 3 では機能しなくなりました。

于 2011-09-09T08:47:43.283 に答える