0
2

More than 3 years have passed since last update.

Rails flashメッセージにエラー文を記載し改行したい

Posted at

やりたいこと

フォームでのエラー文をflashメッセージを用いて下記のように表示したい

お届け先の内容に不備があります
・住所は1文字以上で入力してください
・郵便番号は不正な値です
・宛名は1文字以上で入力してください

方法

モデル名はorderで@orderにエラー文がある場合

controllers
flash[:danger] = "お届け先の内容に不備があります<br>・#{@order.errors.full_messages.join('<br>・')}"
view
<% flash.each do |key, value| %>
  <p class="alert alert-<%= key %>">
    <%= sanitize value, tags: %w(br) %>
  </p>
<% end %>

内容

@order.errors.full_messagesの中身例
["住所は1文字以上で入力してください", "郵便番号は不正な値です", "宛名は1文字以上で入力してください"]

@order.errors.full_messagesの中身は上記のように格納されているため、配列の要素をjoinを用いて結合する。
その際に、区切り文字に"<br>・"とするとflashメッセージは以下になる

flashの中身例
お届け先の内容に不備があります<br>・住所は1文字以上で入力してください<br>・郵便番号は不正な値です<br>・宛名は1文字以上で入力してください

これを、viewに<br>を改行を意味するものであると認識させた上で、表示させたいためsanitizeを用いる
今回は<br>のみ許可している
(sanitize: 文字列内の指定したHTMLタグや属性を許可するもの)

<%= sanitize value, tags: %w(br) %>

完成

image.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2