Собираю данные формы:
data = new FormData()
data.append('post[title]', _this.post.title)
data.append('post[category_id]', _this.post.category_id)
data.append('post[content]', _this.post.content)
И отправляю:
this.$http.patch('/posts/' + this.id, data)
В форме есть поле с именем category_id. Оно может быть пустое. То есть передается в экшен значение null.
Это обработчик:
def update
@post.update_attributes!(post_params)
end
private
def find_post
@post = Post.find(params[:id])
end
def post_params
allowed = %i[title category_id content]
params.require(:post).permit(*allowed)
end
Ошибку вызывает сохранение данных. Вот полный текст ошибки, из которого становится ясно, что проблема в поле category_id. Если его удалить из permit, то ошибка пропадает и данные сохраняются. Притом сохраняются значения null, передаваемые JS.
PG::ForeignKeyViolation: ERROR: insert or update on table "posts" violates foreign key constraint "fk_rails_ac52d45g3n" DETAIL: Key (category_id)=(0) is not present in table "categories".
Как все же правильно отправлять форму, чтобы не было проблем со связями (category_id) и не было сохранения null в таблицу как простого текста?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости