停止 Rails client_side_validations 在 /edit 上加载

Stop Rails client_side_validations from loading on /edit

我有一个表格,管理员可以为他们的客户部分预填。

当客户登录时,他们需要填写某些字段。 Client_side_validations 自动以红色突出显示空白字段,说明这些字段 ("cannot be blank").

这通常是所需的行为,因为模型已部分填充,但在这种情况下,我不希望 client_side_validations 在用户从字段中获得 in/out-focused 之前触发问题,或试图保存不完整的表格。如何确保 client_side_validations 在页面加载时不会熄灭?

我认为你需要改变你的应用程序的架构,你可以根据操作进行复杂的验证来触发,但这会很麻烦,你最好开始使用表单对象,这样你就有了你的模型和在其他 类 中,形成具有自己验证的特定对象。

https://robots.thoughtbot.com/activemodel-form-objects

您还可以使用混合模块在需要时将验证合并到执行时,而不是将它们硬编码到模型中。

您可以在页面加载时关闭客户端验证,通过 javascript(例如使用 document.ready)并在焦点入/出时再次重新启用它们

$(form).disableClientSideValidations();

并启用:

$(form).enableClientSideValidations();

您也可以在单独的输入字段而不是整个表单上调用 disableClientSideValidationsenableClientSideValidations