【问题标题】:Displaying rails custom validation errors next to appropriate field在适当的字段旁边显示 rails 自定义验证错误
【发布时间】: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 验证器已经拥有此功能而无需对视图进行任何修改。

我的问题是如何利用现有框架通过我自己的自定义验证器呈现&lt;span class="error"&gt; 消息?

任何见解都值得赞赏!

【问题讨论】:

    标签: ruby-on-rails forms validation ruby-on-rails-4


    【解决方案1】:

    在您的情况下,您可以在一行中编写所有内容并以这种方式添加您的自定义消息:

    #Model
    validates_numericality_of :pin, :only_integer =>true, 
                              :less_than => 9999, 
                              :message => "Your custom message"
    

    【讨论】:

    • 感谢您的回复。最终,我的意图是将自定义消息添加到自定义验证器,而不是现有验证器。大于小于测试本身只是一种查看其是否正常工作的便捷方式。
    猜你喜欢
    • 2012-02-17
    • 2013-02-08
    • 2014-10-30
    • 2012-06-29
    • 2020-05-18
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多