From c30462003c41175acf7337536b036a47645cf742 Mon Sep 17 00:00:00 2001 From: ingeniarius Date: Wed, 20 Feb 2013 15:22:34 +0400 Subject: [PATCH 001/122] Supporting button[data-remote] as replacement of button_to helper --- src/rails.js | 16 ++++++++++++++++ test/public/test/data-remote.js | 31 +++++++++++++++++++++++++------ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/rails.js b/src/rails.js index a1661f31..2cb26b53 100644 --- a/src/rails.js +++ b/src/rails.js @@ -23,6 +23,9 @@ // Link elements bound by jquery-ujs linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]', + // Button elements boud jquery-ujs + buttonClickSelector: 'button[data-remote]', + // Select elements bound by jquery-ujs inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]', @@ -100,6 +103,11 @@ url = element.data('url'); data = element.serialize(); if (element.data('params')) data = data + "&" + element.data('params'); + } else if (element.is(rails.buttonClickSelector)) { + method = element.data('method') || 'post'; + url = element.data('url'); + data = element.serialize(); + if (element.data('params')) data = data + "&" + element.data('params'); } else { method = element.data('method'); url = rails.href(element); @@ -315,6 +323,14 @@ } }); + $(document).delegate(rails.buttonClickSelector, 'click.rails', function(e) { + var button = $(this); + if (!rails.allowAction(button)) return rails.stopEverything(e); + + rails.handleRemote(button); + return false; + }); + $(document).delegate(rails.inputChangeSelector, 'change.rails', function(e) { var link = $(this); if (!rails.allowAction(link)) return rails.stopEverything(e); diff --git a/test/public/test/data-remote.js b/test/public/test/data-remote.js index d9c2f6d7..1ce113e9 100644 --- a/test/public/test/data-remote.js +++ b/test/public/test/data-remote.js @@ -7,6 +7,12 @@ module('data-remote', { 'data-params': 'data1=value1&data2=value2', text: 'my address' })) + .append($('