From 98db55d74e5e2b571960055533c0fb45d9714fe4 Mon Sep 17 00:00:00 2001 From: Andrew Kaspick Date: Fri, 13 Aug 2010 20:29:52 +0200 Subject: [PATCH 1/2] Support multiple submit buttons --- .../app/templates/public/javascripts/rails.js | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js b/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js index 4283ed8..3971cec 100644 --- a/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js +++ b/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js @@ -71,6 +71,14 @@ }) } + function whichSubmitButton(form, reset) { + var submit = form.select('input[type=submit]').detect(function(input){ + return input.retrieve('rails-submit-button') === true; + }); + if (reset === true) {submit.store('rails-submit-button', null);} + return submit; + } + function handleRemote(element) { var method, url, params; @@ -80,7 +88,7 @@ if (element.tagName.toLowerCase() === 'form') { method = element.readAttribute('method') || 'post'; url = element.readAttribute('action'); - params = element.serialize(); + params = element.serialize({submit:whichSubmitButton(element, true)}); } else { method = element.readAttribute('data-method') || 'get'; url = element.readAttribute('href'); @@ -124,7 +132,6 @@ form.submit(); } - document.on("click", "*[data-confirm]", function(event, element) { var message = element.readAttribute('data-confirm'); if (!confirm(message)) event.stop(); @@ -142,6 +149,11 @@ event.stop(); }); + document.on('click', 'input[type=submit]', function(event, element) { + // register the clicked submit button (required for forms with multiple submit buttons) + element.store('rails-submit-button', true); + }); + document.on("submit", function(event) { var element = event.findElement(), message = element.readAttribute('data-confirm'); @@ -173,3 +185,4 @@ }); }); })(); + -- 1.7.0.4 From 8cb4e6ae45f49911567a5721013b1499b68185dd Mon Sep 17 00:00:00 2001 From: Andrew Kaspick Date: Sat, 14 Aug 2010 14:06:48 +0200 Subject: [PATCH 2/2] return the submit button name instead of the element itself --- .../app/templates/public/javascripts/rails.js | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js b/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js index 3971cec..968d975 100644 --- a/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js +++ b/railties/lib/rails/generators/rails/app/templates/public/javascripts/rails.js @@ -76,7 +76,7 @@ return input.retrieve('rails-submit-button') === true; }); if (reset === true) {submit.store('rails-submit-button', null);} - return submit; + return (submit ? submit.name : null); } function handleRemote(element) { -- 1.7.0.4