summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-03-04 15:16:50 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-03-04 15:16:50 +0000
commitdc50edae5e27fdfc72a7de4d9b7021d98d9621bc (patch)
treeda31e2c09e7beff18eeeec822811630018508d5b
parent5803bf9fc4545610a7ee46ce7f6a6bf9b4f55a57 (diff)
downloadredmine-dc50edae5e27fdfc72a7de4d9b7021d98d9621bc.tar.gz
redmine-dc50edae5e27fdfc72a7de4d9b7021d98d9621bc.zip
Adds a template for API error messages so that it does not depend on AR::Errors serialization.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9094 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/application_controller.rb11
-rw-r--r--app/views/common/error_messages.api.rsb5
-rw-r--r--test/integration/api_test/issues_test.rb4
3 files changed, 9 insertions, 11 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index d6cf2c979..24b45f6ac 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -508,15 +508,8 @@ class ApplicationController < ActionController::Base
# Renders API response on validation failure
def render_validation_errors(object)
- options = { :status => :unprocessable_entity, :layout => false }
- options.merge!(case params[:format]
- when 'xml'; { :xml => object.errors }
- when 'json'; { :json => {'errors' => object.errors} } # ActiveResource client compliance
- else
- raise "Unknown format #{params[:format]} in #render_validation_errors"
- end
- )
- render options
+ @error_messages = object.errors.full_messages
+ render :template => 'common/error_messages.api', :status => :unprocessable_entity, :layout => false
end
# Overrides #default_template so that the api template
diff --git a/app/views/common/error_messages.api.rsb b/app/views/common/error_messages.api.rsb
new file mode 100644
index 000000000..811d2a863
--- /dev/null
+++ b/app/views/common/error_messages.api.rsb
@@ -0,0 +1,5 @@
+api.array :errors do
+ @error_messages.each do |message|
+ api.error message
+ end
+end
diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb
index 4445a000d..a092190d6 100644
--- a/test/integration/api_test/issues_test.rb
+++ b/test/integration/api_test/issues_test.rb
@@ -498,7 +498,7 @@ class ApiTest::IssuesTest < ActionController::IntegrationTest
end
json = ActiveSupport::JSON.decode(response.body)
- assert json['errors'].include?(['subject', "can't be blank"])
+ assert json['errors'].include?("Subject can't be blank")
end
end
@@ -674,7 +674,7 @@ class ApiTest::IssuesTest < ActionController::IntegrationTest
put '/issues/6.json', @parameters, credentials('jsmith')
json = ActiveSupport::JSON.decode(response.body)
- assert json['errors'].include?(['subject', "can't be blank"])
+ assert json['errors'].include?("Subject can't be blank")
end
end