【form_with】text_areaの入力内容の「改行」を反映させる


はじめに

form_withを使って送信フォームを実装し、入力内容に改行を入れても、改行は反映されない。

(簡易的なメモアプリを例とする)

new.html.erb
〜省略〜
<%= form_with model: @memo, local: true do |f| %>
<%= f.text_area :title, placeholder:"メモのタイトルを入力する" %>
<%= f.submit "記録する" %>
<% end %>
〜省略〜
show.html.erb
〜省略〜
<% @memos.each do |memo| %>
  <ul>
    <li>
      <% memo.title%>
    </li>
  </ul>
〜省略〜

・投稿作成画面の表示

↓ フォームの内容を送信すると「改行」が反映されていない。

・投稿画面の表示

記事の内容

form_withで送信するフォーム内の「改行」を反映させる。

(改行版)投稿画面の表示

改行を反映させる方法

show.html.erbの
<% memo.title%>

<%= safe_join(memo.title.split("\n"),tag(:br)) %>
と書き換える。

show.html.erb
〜省略〜
<% @memos.each do |memo| %>
  <ul>
    <li>
      <%= safe_join(memo.title.split("\n"),tag(:br)) %>
    </li>
  </ul>
<% end %>
〜省略〜

コードの意味

・split("\n")で改行コードを取得
・tag(:br))でbrタグに変更