錯誤訊息
當瀏覽器發生422錯誤,很有可能是缺少CSRF Key所引起的。這時候可以到 Log 確認一下是否是缺少 CSRF Key的情形。
方法一:用js抓mete的csrf-token
1 2 3 4
| $(document).ajaxSend(function(e, xhr, options) { var token =$j("meta[name='csrf-token']").attr("content"); xhr.setRequestHeader("X-CSRF-Token", token); });
|
想要學習處理csrf可以看看jquery-ujs的source code
jquery-rails/jquery_ujs.js at master · rails/jquery-rails
方法二:在controller加上一個方法
[SOLVD] Rails: How Does csrf_meta_tag Work? | DevSolvd
配合ajax 使用
1 2 3 4 5 6 7 8 9 10 11 12 13
| $.ajax({ url: "your_url", type: "DELETE", dataType: "json", beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, data: {id: attr.ta_attr_id }, success: function(data) { console.log(data); attr.is_added = false; attr.position = undefined; } });
|
結論
這是在前端做的事情,所以我會選擇使用js來抓