v-crn Code Log

主に備忘録

🍎Railsのformに絵文字を表示する🎉

"文字列".html_safeで表示できる

HTMLで絵文字を表示したい場合、「HTML Entity」や「実体参照」と言われる形式で記述すれば普通は表示される。

😎 ...... 😎

しかしRailsのformタグ内では素直に表示してくれず、実体参照はただの文字列として認識されてしまう。
例として次のformを見てみよう。

<%= form_with url: search_path, method: :get do |f| %>
  <%= f.text_field :keywords, placeholder: "Search", class: "form-control" %>
  <%= f.submit value="&#128269;", class: "btn btn-default" %>
<% end %>

このフォームは検索欄を表している。以下の部分で検索ボタンに虫めがねの絵文字「🔍」を利用しているが、実はこの書き方では「&#128269;」と表示されてしまう。

<%= f.submit value="&#128269;", class: "btn btn-default" %>

そこでhtml_safeメソッドを利用する。

<%= f.submit value="&#128269;".html_safe, class: "btn btn-default" %>

これでRailsのHTMLの特殊文字に対するエスケープ処理がスキップされ、絵文字として出力されるようになる。

参考

HTML特殊文字のエスケープ - Ruby on Rails入門