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