Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix generation of wrong json string when field has multiple errors

  • Loading branch information...
commit e5ec81cd87d2ca2dd412f0468f868315519f32cf 1 parent 76a15dd
@krekoten authored
View
10 activemodel/lib/active_model/errors.rb
@@ -167,6 +167,16 @@ def to_xml(options={})
def as_json(options=nil)
self
end
+
+ def encode_json(encoder)
+ errors = []
+ each_pair do |key, value|
+ value = value.first if value.size == 1
+ errors << "#{encoder.encode(key.to_s)}:#{encoder.encode(value, false)}"
+ end
+
+ "{#{errors * ','}}"
+ end
# Adds +message+ to the error messages on +attribute+, which will be returned on a call to
# <tt>on(attribute)</tt> for the same attribute. More than one error can be added to the same
View
10 activemodel/test/cases/errors_test.rb
@@ -61,5 +61,15 @@ def self.lookup_ancestors
assert_equal ["name can not be blank", "name can not be nil"], person.errors.to_a
end
+
+ test 'to_json should return valid json string' do
+ person = Person.new
+ person.errors.add(:name, "can not be blank")
+ person.errors.add(:name, "can not be nil")
+
+ hash = ActiveSupport::OrderedHash[:name, ["can not be blank", "can not be nil"]]
+
+ assert_equal person.errors.to_json, hash.to_json
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.