2

我注意到嵌套表单存在问题,但不知道如何解决。我的表格工作正常,这不是关于如何让它们工作的问题。这个问题更像是“在这种情况下我应该做什么”。

当我通过 fields_for 使用嵌套表单时,效果很好。当我添加 javascript 以便能够添加和删除字段时,一切都很好。我可以添加,保存,删除,保存,没有问题。但是,如果您使用嵌套表单编辑对象,然后删除其中一个嵌套对象(通过将 {'_delete' => true} 参数与对象一起发送),那么您使用后退按钮并再次保存该表单而不删除相同的你会得到一个错误的字段。

你的浏览器缓存了应该不再存在的字段,然后 Rails 尝试通过哈希中的 'id' 元素找到旧对象,但它失败了,这是理所当然的。无论如何我可以防止这种情况吗?我是否需要手动检查哈希以确保元素仍然存在?有什么方法可以强制浏览器刷新或其他什么?谢谢你的时间。

4

1 回答 1

2

是和不是。您的应用程序几乎无法控制浏览器行为。如果浏览器向您的应用程序发送不再具有相关性的信息,您可以在服务器端执行的最佳操作是针对该信息进行验证并向用户显示干净的错误消息(或静默删除无效的记录 ID,但这可能会让人非常困惑)用户。)

另一种方法是尝试让浏览器停止缓存有问题的页面,您之前可能在银行或其他敏感应用程序中看到过这种情况,您在点击后退按钮时会收到“此页面已过期”的警告。您可以使用元标记或 http 标头将过期日期设置为过去或使用 pragma: no-cache。

于 2012-08-27T18:53:06.100 回答