📚

(自分用メモ)詳細 スクール課題1 タスクアプリ作成 新規登録にてバリデーション実施時のフラッシュメッセが表示されず、エラーが出る

2022/12/26に公開

<結論>
rails7特有の問題
アクションにstatus: :unprocessable_entityを追記することで解決

<以下本文>
■現状

課題1スケジュールアプリにおいて、新規登録にて記入欄が空欄際に表されるフラッシュを実装しようとしています。

実装のため

https://mng-camp.potepan.com/curriculums/rails-16

上記参考の上、以下実施しましたが、エラーが発生し、解決できずにいます。

・バリデーション記入

・_error.html.erb作成

・renderをnew.html.erbに記載

その後、新規登録の画面から、記入欄全て空欄にしたのち、サイト下部”新規登録”を押すとエラー画面へ

■実際に出てるエラーメッセージ

■やりたいこと

エラーを解決し、以下モデルサイトの様にフラッシュが正常に出る様にしたい

■環境

M1チップ

ventura ver13.0

rails704

ruby304

■既に試したこと、参考にしたページ

https://mng-camp.potepan.com/questions/e750c3fa-dd07-4425-a49b-0ac38ee9caed

https://qiita.com/P-man_Brown/items/862503a638801fea01e7

→status: :unprocessable_entityをコントローラーに追記。※追記も同じエラー

■git

https://github.com/Hiro-Nagai/ptpn_sch

<回答>
ユーザー画像
中野(メンター

2022/11/3 22:35

<td><%= f.date_field :start %></td>

13行目の start は文字列のデータのため、日付に変換できない。というようなエラーになります。

schema.rbを見ると start は文字列型で定義しているのが恐らく問題ですので変更方法は調べてみましょう。

ユーザー画像
長井宏樹

2022/11/4 11:21

中野様

回答ありがとうございます

こちらのページを参考に、モデルのカラムデータ型を変更しました。

https://qiita.com/iverson3kobe0824/items/6dfce930d57dcc5dd482

https://qiita.com/jackie0922youhei/items/472ae8a35455475b3de8

しかしながら、同じように

新規登録の画面から、記入欄全て空欄にしたのち、サイト下部”新規登録”を押すとエラー画面へ

新たに以下のようなエラーが出ました。

自身の仮説として、

以下 t.datetime "created_at", null: falseのように null: falseを追記しないといけないと

考え追記しましたが、同じエラーが出ました。

そもそも、仮説が合っているのか。

また、仮説が合っていたとしても、追記の仕方が間違っているのか。

ご指導いただけますと幸いです。

ユーザー画像
メンターHyo

2022/11/4 11:44

まずはエラーを理解していただきたいかなと思います。Google翻訳などで正確に翻訳し理解していただき、その翻訳文を載せてください。

また翻訳文から現状なにが問題でどこを疑っていけばいいのかもアウトプットお願いします

ユーザー画像
長井宏樹

2022/11/4 14:30

hyo様

ご連絡有り難うございます。

翻訳文から考えると、

post.rbにself.finishとself.startの定義がなかったからと考えます。

もう少しシンプルな書き方で定義しました(以下)。

if start.present? && finish.present? && start >= finish

該当していたエラー文は出てこなくなりましたが、

以下のように開始日、終了日の日付を入れ替えて、フラッシュを出さそうとしました。

しかし。今度はsubmitの登録完了するが反応しなくなりました。

https://teratail.com/questions/194194

https://qiita.com/taro03/items/4973c1c14798c1601d6e

これら記事を参考に<% end %>の位置を変えてみたり、</table>の位置を変えてみたものの、反応せず。

そもそも論として、自分の進め方が合っているのかも含めて、ご指導いただければと思います

ユーザー画像
長井宏樹

2022/11/4 14:55

https://qiita.com/P-man_Brown/items/862503a638801fea01e7

こちらの記事参考に試してみましたら、解決できました。

バリデーション機能し、フラッシュ文出てきました

メンター様方

ご回答いただき有り難うございました。

Discussion