Ruby on Rails - 偶尔无效的真实性令牌

时间:2018-01-10 20:31:59

标签: ruby-on-rails ruby

我有一些情况,似乎用户可能会闲置一段时间,然后可能会回到有或没有刷新的页面,并且在页面上提交表单后,用户会收到HTTP 422无效的真实性令牌错误。

我理解这个错误意味着什么,但我不确定如何正确处理错误。我不想删除控制器中令牌的验证。我所看到的所有其他问题只是谈论令牌是什么而不是如何解决问题。

1 个答案:

答案 0 :(得分:0)

您可以检查表单上的元素(使用开发人员工具),以查看是否存在保存令牌的隐藏输入。否则,您可以手动将authenticity_token添加到表单助手,例如

<%= form_for(@model, ... authenticity_token: true) do |f| %>

之后尝试显示表单以确保您可以看到已经添加到表单的隐藏输入authenticity_token。我在使用ajax时有相同的经验,我用这种方式实现它:

<%= form_for(@model, html: { multipart: true }, remote: local_assigns[:ajax_form], authenticity_token: true) do |f| %> or

<%= form_for(@model, html: { multipart: true }, remote: true, authenticity_token: true) do |f| %>