我有一些情况,似乎用户可能会闲置一段时间,然后可能会回到有或没有刷新的页面,并且在页面上提交表单后,用户会收到HTTP 422无效的真实性令牌错误。
我理解这个错误意味着什么,但我不确定如何正确处理错误。我不想删除控制器中令牌的验证。我所看到的所有其他问题只是谈论令牌是什么而不是如何解决问题。
答案 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| %>