В вашем случае, данные на сервер отправляются не так как должно быть, нужна пара: ключ/значение, тоесть для отправки на сервер будет такой формат: name=ключ, value=значение
var data = [];
formData.forEach(function(value, key) {
switch (key) {
case 'Post[name]':
case 'Post[category_id]': {
data.push({"name": key, "value": value});
} break;
}
});
console.log(data);
/*
[Object {
name: "Post[name]", value: "bla bla"
}, Object {
name: "Post[category_id]", value: "12"
}]
*/
P/S: только зачем так усложнять, если можно записать проще:
var data = $('селектор_формы').find('input[name="Post[name]"], input[name="Post[category_id]"]').serializeArray();