summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2017-03-23 16:35:42 +0100
committerAzul <azul@riseup.net>2017-03-23 16:35:42 +0100
commitc11e31acf3a592b8560459469ae4acf0e6e5dfd4 (patch)
tree9130225ec9af905aaad9ed7f8fa64dbc22d574da
parent94ba8eae189ef6d60ddfa194e73b672123e17d6f (diff)
fix: display error js responses in dev environment
Sometimes the dev environment will send back a plain text response. This causes the json parser to raise an exception and used to cause the browser not to display any error message. Now we dumpt the whole server response - which happes to also include the backtrace. A lot more useful than doing nothing. In production this should never happen as 500s get handled by the ExceptionApplication / our ErrorsController there.
-rw-r--r--app/assets/javascripts/leap.js2
-rw-r--r--app/assets/javascripts/srp/src/jqueryRest.js15
-rw-r--r--app/assets/javascripts/users.js6
3 files changed, 15 insertions, 8 deletions
diff --git a/app/assets/javascripts/leap.js b/app/assets/javascripts/leap.js
index c8fbcf5..c12a2d6 100644
--- a/app/assets/javascripts/leap.js
+++ b/app/assets/javascripts/leap.js
@@ -3,7 +3,7 @@
// add a bootstrap alert to the page via javascript.
//
function alert_message(msg) {
- $('#messages').append('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><span>'+msg+'</span></div>');
+ $('#messages').append('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><pre>'+msg+'</pre></div>');
}
ClientSideValidations.formBuilders['SimpleForm::FormBuilder'].wrappers.bootstrap = ClientSideValidations.formBuilders['SimpleForm::FormBuilder'].wrappers["default"];
diff --git a/app/assets/javascripts/srp/src/jqueryRest.js b/app/assets/javascripts/srp/src/jqueryRest.js
index 0c58eb2..437bd65 100644
--- a/app/assets/javascripts/srp/src/jqueryRest.js
+++ b/app/assets/javascripts/srp/src/jqueryRest.js
@@ -88,10 +88,17 @@ srp.remote = (function(){
// the http error response.
function error(xhr, text, thrown)
{
- if (xhr.responseText && xhr.responseText != "")
- srp.error($.parseJSON(xhr.responseText));
- else
- srp.error("Server did not respond.");
+ var message;
+ if (xhr.responseText && xhr.responseText != "") {
+ try {
+ message = $.parseJSON(xhr.responseText);
+ } catch (err) {
+ message = xhr.responseText;
+ }
+ } else {
+ message = "Server did not respond.";
+ }
+ srp.error(message);
};
return {
diff --git a/app/assets/javascripts/users.js b/app/assets/javascripts/users.js
index 3dae526..4b5198f 100644
--- a/app/assets/javascripts/users.js
+++ b/app/assets/javascripts/users.js
@@ -151,11 +151,11 @@
}
function extractErrors(message) {
- if ($.isPlainObject(message) && message.errors) {
- return message.errors;
+ if ($.isPlainObject(message)) {
+ return message.errors || { base: message.error };
} else {
return {
- base: (message.error || JSON.stringify(message))
+ base: message
};
}
}