🎉
注文情報確認画面
問題点
注文情報確認画面でリロードすると
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