LoginSignup
0
0

More than 3 years have passed since last update.

バリデーションエラーが表示されない問題

Posted at

思いのほかハマってしまったので、同じような問題に遭遇した誰かの手助けになればと思い残します。

/_error.html.erb

<% if family.errors.any? %>
  <div class = "alert">
    <ul>
      <% family.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  </div>
<% end %>

/フォーム

<%= render "error_form", family: @family %>

  <%= form_with model: @family, url: :family_families do |form| %>
    <%= render "form", form: form %>
  <% end %>
</div>

色々試してみます。

[5] pry(main)> @family.errors.full_messages
=> ["Family nameを入力してください",
 "Given nameを入力してください",
 "Family name kanaを入力してください",
 "Given name kanaを入力してください",
 "Genderを入力してください",
 "Relationshipを入力してください",
 "Addressを入力してください",
 "Password digestを入力してください",
 "Password digestは8文字以上で入力してください",
 "Passwordを入力してください"]

しっかりエラー文入ってますね。

googleデベロッパー

<form action="/family/families" accept-charset="UTF-8" method="post">

local :trueオプションが効いてない場合は表示されないようです。その場合はdata-remote=trueと表示されるはずなので非同期通信になっていないことが確認できます

結論

contollerのsave!メソッドが原因でした。

・saveメソッド → 保存できない場合falseを返す。
・save!メソッド → 保存できない場合例外ActiveRecord::RecordInvalidが発生する。

0
0
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
0