Railsのwhereで取得した結果をエスケープさせたくない
Railsでwhere文で取得したデータの中に、クエスチョンマークやクオーテーションマークがあった場合、エスケープされて
&
等になっています。
viewで表示させる際は、ビュー内で.html_safeをして解決しましたが、
コントローラ内の処理(をdelayed_jobのjobに書き出したもの)で、直接取得したデータを使いたい場合に、どうすればいいかわかりません。
具体的には、取得したデータを、あるAPIを利用した検索ワードとして使いたいのですが、その際にエスケープする前の文字列を検索ワードとして使いたいのです。
@hoge_data = Hoge.where(neko: nil).order(created_at: :DESC).limit(10)
@hoge_data.each{|row|
if row.nil?
# データ空のときとりあえず何もしない
else
p row['title']
p row['title'].class
p row['title'].html_safe
item = get_data_from_tako(row['title'])
end
}
p row['title'].html_safe
も p row['title']
も同じものが表示されます。
p row['title'].class
はstringです。
item = get_data_from_tako(row['title'].html_safe)
にすると、
#<NoMethodError: undefined method `bytesize' for nil:NilClass>
が返ります。
よろしくお願いいたします。