🎉

注文情報確認画面

2023/12/26に公開

問題点

注文情報確認画面でリロードすると
couldn't find order with 'id' = confirm
というエラー文が発生。

原因

confirmページではpostメソッドが実行されているが、getメソッドは定義されていない。
この状態だとデータベース上ではidが含まれているURLを上から探していき、今回はshowページに
遷移しようとする。ここで上記のエラーが発生する。

解決策

get postは同時にメソッドを定義することは不可能なので別でerrorページ、アクション、ルートを設定し、

 get 'confirm', to: 'orders#error', as: 'error'
orders/error
 <section class="inner confirm_error bg-white my-5 p-5">
	<h2 class="text-center">エラー</h2>
	<h3 class="text-center">
		問題が発生しました。<br>
		お手数ですが、再度情報入力からやり直していただきますようお願いします。
	</h3>
	<div class="text-center">
		<%= link_to "注文情報入力に進む", new_order_path, class: "btn btn-success" %>
	</div>
</section>

このような記述を追加すると確認画面をリロードした後、エラー画面に遷移し
リロードした際のエラーは表示されません。

最後に

get postメソッドは同時に表示できないため新たにエラーアクション等を追加する考えを
学べました。

Discussion