rails4.2でエンコードエラー rails incompatible character encodings: ASCII-8BIT and UTF-8
rails4.2で簡単な検索フォームを作ったのだが、テキストフィールドで検索すると下記のエラーが発生。
rails3系の時はこんな現象おきなかったがなぜだろう、、
rails incompatible character encodings: ASCII-8BIT and UTF-8
= form_for @search_form,:url => root_path,:method => 'get' do |f| .form-group = f.text_field :keywords,:class => 'form-control',:placeholder => 'keywords' = f.submit 'search' ,:name => 'submit',:class => 'btn btn-default'
- @contents.each do |c| li p=c.title
どうやら ASCII-8BITが混ざってしまってるらしい。 c.titleのエンコードを調べてもutf8が帰ってくる。
formからのparameterを調べてみる。
raise @params['keywords'].encoding.inspect #<Encoding:ASCII-8BIT>
これだ。
ここの部分をUTF8にしてあげる。↓
keywords.force_encoding("UTF-8") @arr = Content.where('title LIKE ?', "%#{keywords}%")
無事、日本語で検索できるようになった。
無理やり感があるので、他にもっといい方法がないか後ほど調べてみる。
追記
どうやら、あるGemが悪さをしてたっぽいので、消したら動きました。