ajax请求补丁“更新”操作时发生422错误

时间:2020-06-08 08:35:46

标签: javascript ruby-on-rails ruby ajax

我目前有一个事件模型,控制器和视图。 我有一个更新事件的模式。它将ajax请求发送到更新操作。 但是我目前正在从ajax请求中接收到“ 422(无法处理的实体)”。

请求甚至没有击中控制器操作。 (我在更新操作的顶部有一个binding.pry)

我不确定为什么它不起作用,因为我也使用相同的ajax请求来创建事件。

Ajax请求:

  $.ajax({
    url: $form.attr('action'),
    type: "PATCH",
    data: data,
    success: this.onAjaxSuccess.bind(this),
    failure: function (error) {
      debugger
      console.log(error)
    }
  });

表单动作是: /events/1

我试图通过删除任何不必要的代码(例如数据)来执行更新操作,但还是不走运。另外,我也看到了几条建议skip_before_action :verify_authenticity_token的帖子,但这也没有用。

我不确定下一步是否可以提出任何建议。谢谢

2 个答案:

答案 0 :(得分:0)

在评论中找到了Mark的答案。 这是一个before action问题。 我有一张以前需要的支票,但我忘了把它删除。

答案 1 :(得分:0)

您的ajax请求可能需要使用csrf令牌,使用Rails帮助器构建更新表单,然后向请求添加标头

headers: {
  'X-Transaction': 'POST Example',
  'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}