カードの情報を暗号化して送るtokenのエラーでの備忘録を書いて行きます。
###最初に
*今回はformオブジェクトパターンを使ったやり方になっています。
なので、attr_accessor :token
をmodelに記入してあります。
カード情報
card.js
const card = {
number: formData.get("purchase_management_shipping_address[number]"),
cvc: formData.get("purchase_management_shipping_address[cvc]"),
exp_month: formData.get("purchase_management_shipping_address[exp_month]"),
exp_year: `20${formData.get("purchase_management_shipping_address[exp_year]")}`,
};
・formDate.getの後の引数のname属性の値が間違っている可能性がある。
検証のコンソールを使って必要とする値を照らし合わせてname属性を記述する必要がある。
・id情報
card.js
document.getElementById("card-number").removeAttribute("name");
document.getElementById("card_cvc").removeAttribute("name");
document.getElementById("card-exp-month").removeAttribute("name");
document.getElementById("card_exp_year").removeAttribute("name");
こちらはid情報なので、コンソールで照らし合わせて、カード情報のidを記述してあげる。
結局、エラーの原因は記述ミスでした。
よく誤字、脱字するので以後気をつけたいと思います。
##追記
「tokenのバリデーションについて」
tokenはordersテーブルに存在しないため、本来はOrderモデルのバリデーションとしては記載することはできません。
最初にattr_accessor :tokenと記載したことにより、tokenについてのバリデーションを記述することができます。