【发布时间】:2014-12-09 07:24:30
【问题描述】:
我正在着手学习 Rails 中的验证器,但遇到了以下问题。
我正在开发的应用上有一系列表单域。我注意到,如果我使用 Rails 原生的验证器,例如 validates :pin_number, length: { is: 6 },它会在有问题的表单字段旁边显示一条漂亮的小消息:<span class="error">is the wrong length (should be 6 characters)</span> Awesome!
但是,当我在下面创建自定义验证器来检查 :pin_number 的值时,我的错误消息虽然出现在顶部,但并未出现在违规字段旁边。
#from my controller hp_id.rb
validates :pin_number, pin: true
#from my custom validator in app/validators/pin_validator.rb
class PinValidator < ActiveModel::EachValidator
def validate_each (record, attribute, value)
if value > 9999
record.errors[attribute] << (options[:message] || "validator working")
end
end
end
我在网上环顾四周,虽然我确实找到了编辑输入字段以显示验证错误的建议,但这种方法似乎很草率,因为某些 rails 验证器已经拥有此功能而无需对视图进行任何修改。
我的问题是如何利用现有框架通过我自己的自定义验证器呈现<span class="error"> 消息?
任何见解都值得赞赏!
【问题讨论】:
标签: ruby-on-rails forms validation ruby-on-rails-4