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'.
機能を無効にする方法、またはこれらの値をエスケープする方法を知りたいです。sprintf スタイルにエスケープしようと%sしまし%%sたが、うまくいきません。