Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails验证消息处理百分比符号和双周期的方式很奇怪_Ruby On Rails_Validation_Activerecord_Ruby On Rails 2 - Fatal编程技术网

Ruby on rails Rails验证消息处理百分比符号和双周期的方式很奇怪

Ruby on rails Rails验证消息处理百分比符号和双周期的方式很奇怪,ruby-on-rails,validation,activerecord,ruby-on-rails-2,Ruby On Rails,Validation,Activerecord,Ruby On Rails 2,使用Rails 2.3.4、Ruby 1.8.7 我有一个ActiveRecord验证,我想在错误消息中包含用户的输入。我正在做的简化版本如下: record.errors.add attr, "'#{calculated_value}' is not valid.' 其中,计算值是用户输入的较大值的一部分 我发现,如果用户输入包含某些字符的值,可能会发生奇怪的事情。如果计算值包含%s,%s将替换为用户输入的完整值。如果计算的\u值包含。,我得到: ArgumentError - intern

使用Rails 2.3.4、Ruby 1.8.7

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

record.errors.add attr, "'#{calculated_value}' is not valid.'
其中,
计算值
是用户输入的较大值的一部分

我发现,如果用户输入包含某些字符的值,可能会发生奇怪的事情。如果
计算值
包含
%s
%s
将替换为用户输入的完整值。如果
计算的\u值
包含
,我得到:

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风格,但这不起作用

我不知道该方法在第2.3.4条中是否可用。但是你能试试activerecord吗。此帮助程序验证属性值是否包含在给定集合中。因此,您的代码将类似于

class YourModel< ActiveRecord::Base
  validates :calculated_value, :inclusion => { :in => %w(Valid Values you want),
    :message => "%{calculated_value} is not a valid value" }
end
classyourmodel{:in=>%w(所需的有效值),
:message=>“%{computed_value}不是有效值”}
结束

我的验证比可接受值列表更复杂。并不是我在确定错误值的逻辑上有问题,而是我给record.errors.add的字符串如果包含某些字符序列(如%s),就会被重写。@np_uuu能否给出场景的具体情况