自定义Railsvalidation不向输入添加“field_with_errors”包装器

我正在使用一个需要一些自定义validation的表单的Rails 4站点。 但是当validation标准失败并显示错误消息时,我正在检查的输入字段没有给出field_with_errors包装器。 正在validation的所有其他字段正确地获取包装器,但它们的validation是对每个属性的简单存在检查。

如何使用自定义validation添加包装器?

附加说明:如果可能的话,我只想显示一次错误消息 – 但要突出显示这两个字段。

在我的模型中:

validate :at_least_one_apply_method def at_least_one_apply_method if [self.apply_url, self.application_instructions].reject(&:blank?).size == 0 errors[:base] << ("Please provide at least one: Where to Apply or Applications Instructions.") end end 

让我知道所需的任何其他信息。 谢谢!

您正在向错误[:base]添加自定义错误消息。 您需要将其添加到要包装的字段中,例如

 errors[:apply_url] << ("Please provide at least one: Where to Apply or Applications Instructions.") errors[: application_instructions] << ("Please provide at least one: Where to Apply or Applications Instructions.") 

如果object.errors哈希具有该字段名称的密钥,则错误消息仅绑定到字段。 但是您正在使用base的键添加自定义消息。

所以你可以在下面这样做

 validate :at_least_one_apply_method def at_least_one_apply_method [self.apply_url, self.application_instructions].map{|field| field.blank? ? (self.errors.add("field","Please provide at least one: Where to Apply or Applications Instructions.") ") : ''} end