0
0

ActiveHashの初期値を設定したらエラーメッセージが出てこなかった件

Last updated at Posted at 2024-01-22

はじめに

プログラミング初心者ですので、、温かく見守って頂けると幸いです。
何か間違っていたらコメントお願いします。

エラーメッセージが出てこない

Image from Gyazo
ActiveHashを使用した入力フォームの初期値に上記のような初期値を設定していましたが、そうするとエラーメッセージが出ないという状況に陥りました。
しかも、初期値ではエラーメッセージ出ないのに、普通に項目を選択して保存しようとすると、"Category can't be blank"というエラーが、、、(選択してるのに、、、)

解決

原因ははっきりしていませんが、修正した箇所としては、
idを0~から始めるのではなく1~から始めた。(上記の画像は修正後)
ビューのnew.html.erbの
<%= f.collection_select(:category_id, Category.all, :id, :name, {include_blank: true}, {class:"select-box", id:"item-category"}) %>

<%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"select-box", id:"item-category"}) %>

に修正({include_blank: true}の部分を削除しました。)
これでエラーメッセージが正常に出るようになりました。

ちなみに

Image from Gyazo
こちらの status: :unprocessable_entity の書き忘れでエラーメッセージが出ない場合もあるとのこと。
自分はなんとなくで記載していたので、初めて知りました。

追記

後から原因がわかりました。
バリデーションでid:1を選択した場合は保存ができないように設定していました。
だから、idが0だと保存されてしまうし、きちんとカテゴリーを選択していてもエラーメッセージが出てしまっていたんですね。
これにて解決。

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