errorメッセージが表示されなくて詰まった

今日もいくつもエラーや分からないことで詰まっていたのですが、そのうちの1について書き留めておこうと思います!!

 

エラー内容

うまく保存ができなかった際にエラーメッセージを出力させたかったのですが、

なぜか表示されないという現象で詰まっておりました。

以下はそのビューファイルです。

 

new.html.slim

div
| TODO新規作成
div
- if @task.errors.any?
- @task.errors.full_messages.each do |msg|
p
= msg

= form_with model: @task, url: tasks_path do |f|
div
= f.text_field :title
div
= f.text_area :description
div
= f.submit

 

コントローラーは以下のように書いており、うまくelseに流れるところまではうまくいっておりました。

 

tasks_controller.rb

def create
@task = Task.new(task_params)
@task.save
if !@task.new_record?
redirect_to tasks_path
flash[:notice] = 'TODOを新規作成しました!'
else
render 'new'
end
end

 

 

解決方法

以下のように、form_withにlocal: trueオプションを足したらうまく行きました。

form_withはデフォルトでremote: trueになっているようです。

div
| TODO新規作成
div
- if @task.errors.any?
- @task.errors.full_messages.each do |msg|
p
= msg

= form_with model: @task, url: tasks_path, local: true do |f|
div
= f.text_field :title
div
= f.text_area :description
div
= f.submit