自定义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