gpt4 book ai didi

ruby-on-rails - Backbone.js 服务器端验证和其他服务器端错误

转载 作者:行者123 更新时间:2023-12-04 02:21:43 28 4
gpt4 key购买 nike

遇到服务器端错误(例如验证错误)时如何回滚模型更改?

鉴于必须在服务器端完成某些验证,使用backbone.js(Rails后端)执行此操作的适当方法是什么?

保存主干模型时,客户端验证会触发,如果验证失败(该模型的 View 不更新),则会提供适当的用户体验。但是,如果服务器端验证失败,则模型及其所有 View 在 PUT 到服务器之前已经更新(使用无效数据)。

这似乎有一些问题。

  • 在服务器端验证模型之前更新所有 View 。
    例如,如果您有一个带有弹出编辑的模型列表
    对话框中,列表中的模型可能会更新
    在调用 Model.save 之后但在它有之前的不可验证的信息
    经过服务器端验证和 PUT 处理。
  • 如果服务器返回错误(例如 422 错误),则不会发生模型的“回滚”。无法验证的数据就像粪一样坐在那里。这真的很糟糕。

  • 我使用backbone.js 错了吗?有没有一种众所周知的方法来处理这种(非常常见的)场景?我知道我可以对旧值等进行一些手动缓存,但这是一个很糟糕的解决方案。

    谢谢!

    最佳答案

    不知道我是否做错了(BackboneJS 的新手),但我遇到了同样的问题,这是我的解决方法:

  • 我在服务器端进行所有验证
  • 我没有执行普通的 model.save,而是对服务器进行标准的 ajax 调用,并返回包含修改后模型属性的错误消息或成功消息。如果成功,我可以使用返回的属性执行 model.set 以更新模型和相应的 View 。
  • 如果你想先做客户端验证,我想你可以用 {silent: true} 选项做一个保存,这样 View 就不会更新,然后做 ajax 调用,看看需要做什么根据响应(如果出错则恢复模型的原始值,如果成功则更新 View )

  • 希望这可以帮助。

    ps:这有效,但感觉不“干净”。如果有更好的解决方案,我也很乐意阅读

    关于ruby-on-rails - Backbone.js 服务器端验证和其他服务器端错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684984/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com