停止Rails client_side_validations加载/编辑

时间:2016-02-22 19:22:21

标签: ruby-on-rails client-side-validation

我有一个管理员为其客户部分预填充的表单。

当客户登录时,他们需要填写某些字段。 Client_side_validations会自动以红色突出显示空白字段,并解释这些字段(“不能为空”)。

这通常是所需的行为,因为模型已部分填写,但在这种情况下,我不希望client_side_validations触发,直到用户从相关字段进行了进/出聚焦,或者尝试了保存不完整的表格。如何在页面加载时确保client_side_validations不会消失?

2 个答案:

答案 0 :(得分:1)

我认为您需要更改应用程序的体系结构,您可以根据操作进行复杂的验证以触发,但这将是一个混乱,您最好开始使用表单对象,因此您拥有模型和其他类,形成具有自己的验证的特定对象。

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

此外,您可以使用mixin模块在需要时将执行时间中的验证合并,而不是在模型中对它们进行硬编码。

答案 1 :(得分:1)

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

$(form).disableClientSideValidations();

并启用:

$(form).enableClientSideValidations();

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