From f3e5e07982946f05b9826d5701aa95359bb5a10f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 13 Apr 2005 05:44:43 +0000 Subject: Added submit_to_remote that allows you to trigger an Ajax form submition at the click of the submission button, which allows for multiple targets in a single form through the use of multiple submit buttons #930 [yrashk@gmail.com] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1160 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/javascript_helper.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 19e037e909..dd80def3ac 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added submit_to_remote that allows you to trigger an Ajax form submition at the click of the submission button, which allows for multiple targets in a single form through the use of multiple submit buttons #930 [yrashk@gmail.com] + * Fixed pagination to work with joins #1034 [scott@sigkill.org] * Fixed that *rest parameter in map.connect couldn't accept an empty list #1037 [Dee.Zsombor@gmail.com] diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb index 584f33f81d..9e91cd189e 100644 --- a/actionpack/lib/action_view/helpers/javascript_helper.rb +++ b/actionpack/lib/action_view/helpers/javascript_helper.rb @@ -92,6 +92,20 @@ module ActionView tag("form", options[:html], true) end + + # Returns a button input tag that will submit form using XMLHttpRequest in tghe background instead of regular + # reloading POST arrangement. options argument is the same as in form_remote_tag + def submit_to_remote(name,value,options = {}) + options[:with] = 'Form.serialize(this.form)' + + options[:html] ||= {} + options[:html][:type] = 'button' + options[:html][:onclick] = "#{remote_function(options)}; return false;" + options[:html][:name] = name + options[:html][:value] = value + + tag("input", options[:html], false) + end def remote_function(options) #:nodoc: for now javascript_options = options_for_ajax(options) -- cgit v1.2.3