【问题标题】:Rails validation message is treating percentage signs and double periods oddlyRails 验证消息奇怪地处理百分比符号和双句点
【发布时间】:2012-09-10 00:36:41
【问题描述】:

使用 Rails 2.3.4、Ruby 1.8.7。

我有一个 ActiveRecord 验证,我想在错误消息中包含用户的输入。简化版的我正在做这样的事情:

record.errors.add attr, "'#{calculated_value}' is not valid.'

其中calculated_value是用户输入的较大值的一部分。

我发现如果用户输入的值包含某些字符,就会发生奇怪的事情。如果calculated_value 包含%s,则%s 将替换为用户输入的完整值。如果calculated_value 包含..,我得到:

ArgumentError - interning empty string from /var/lib/gems/1.8/gems/activesupport-2.3.4/lib/active_support/vendor/i18n-0.1.3/lib/i18n.rb:196:in `to_sym'.

我想知道如何禁用该功能或​​如何转义这些值。我尝试将%s 转义为%%s,sprintf 风格,但这不起作用。

【问题讨论】:

    标签: ruby-on-rails validation activerecord ruby-on-rails-2


    【解决方案1】:

    我不知道这个方法在 rals 2.3.4 中是否可用。但是你能试试activerecordInclusion吗?这个助手验证属性的值是否包含在给定的集合中。所以你的代码会是这样的

    class YourModel< ActiveRecord::Base
      validates :calculated_value, :inclusion => { :in => %w(Valid Values you want),
        :message => "%{calculated_value} is not a valid value" }
    end
    

    【讨论】:

    • 我的验证比可接受值的列表更复杂。这并不是说我确定错误值的逻辑有问题,而是我提供给 record.errors.add 的字符串如果包含某些字符序列(例如 %s)会被重写。
    • @np_ 你能找到具体情况的场景示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2016-01-31
    相关资源
    最近更新 更多