我想在输入字段中显示错误消息,所以我这样做是通过将它们放在占位符中来实现的:
<%= f.input :age, label: false, placeholder: "#{f.object.errors.messages.has_key?(:age) ? f.object.errors.messages[:age].join(", ") : "Age*"}" %>
这是我对年龄的模型验证:
validates :age, numericality: { greater_than_or_equal_to: 18 }
但是,如果我提交的值为11
的年龄,我将使用值为11
的红色边框输入字段。
如果验证无法通过,如何清除输入字段?
我尝试使用自定义验证方法,例如:
validate :minimum_age
def minimum_age
if age < 18
self.errors.add(:age, "must be at least 18 years old!")
self.age = nil
end
end
这将清除该字段,但是当它呈现视图时,我也会出现a 'field must not be empty'
错误,因为我只是将其设为零。
答案 0 :(得分:1)
如果字段有错误,您可以清除该字段:
unless @user.valid?
@user.age = nil if @user.errors.include?(:age)
end
答案 1 :(得分:1)
尝试
<%= f.input :age, label: false, placeholder: "your code", value: nil %>
顺便说一下,你可能想把你的占位符消息提取到helper方法中,现在它有点乱,lol
像:
def render_error_message(f, key)
f.object.errors.messages.has_key?(key) ? f.object.errors.messages[:age].join(", ") : "Age*"}
end
然后在你看来:
<%= f.input :age, label: false, placeholder: render_error_message(f, :age), value: nil %>
答案 2 :(得分:0)
这是一个非常尴尬的要求;如果你想清除这个值,那么我建议你在视图中而不是模型中进行,或者你可以选择使用JS来做。
答案 3 :(得分:0)
通过设置<%= f.input :age, label: false, placeholder: "#{f.object.errors.messages.has_key?(:age) ? "#{f.object.age = ""}Vârstă*" + " " + "( #{f.object.errors.messages[:age].join(", ")} )" : "Vârstă*"}" %>
order.setOrderStatus(OrderStatus.PENDING_COMPLETION); //2
return salesOrderDao.saveOrUpdate(order); //3