0

使用 Rails 2.3.4、Ruby 1.8.7。

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

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

哪里calculated_value是较大值的用户输入的一部分。

我发现如果用户输入包含某些字符的值,就会发生奇怪的事情。如果calculated_valuecontains %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%%ssprintf 风格,但这不起作用。

4

1 回答 1

0

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

class YourModel< ActiveRecord::Base
  validates :calculated_value, :inclusion => { :in => %w(Valid Values you want),
    :message => "%{calculated_value} is not a valid value" }
end
于 2012-09-10T01:48:02.127 回答