問題発生の経緯
経緯としてはタイトルの通りです。
保存は問題なくできているが、保存が失敗した時にエラー文が表示されず苦戦しておりました。
(コード一部抜粋)
laundries_controller.rb
def create
@laundry = Laundry.new(laundry_params)
if @laundry.save
redirect_to root_path
else
render :new
end
end
new.html.erb
<%= form_with model:@laundry, url: laundries_path, locals: true do |f| %>
<%= render 'error_messages', model: f.object %>
結論
ビューファイルの記述に誤りがありました。
正
local: true
誤
locals: true
正しい記述に修正したことで無事エラー文が表示されました。
記述ミスによって非同期通信になっていたため、エラーメッセージが正しく表示されていなかったという訳です。
ちなみにlocals
はrender
メソッドのオプションで部分テンプレートで使用する変数の定義ができます。
1文字だけの違いではありますが、その違いで挙動が変わるため、気をつけなければと痛感しました。
余談
記事を作成するにあたりコードを表示させたいがなかなかうまくいかず苦戦...
コードを表示させるときはバッククォートの前後は空行にしないといけないのですね
実際に手を動かしながら覚えていくことが大切だと感じました。