aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/CHANGELOG4
-rw-r--r--actionpack/lib/action_view/helpers/javascript_helper.rb8
2 files changed, 12 insertions, 0 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index cbfb3993bb..174cb88d20 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,9 @@
*SVN*
+* Added a fall-through action for form_remote_tag that'll be used in case Javascript is unavailable #1459 [Scott Barron]. Example:
+
+ form_remote_tag :html => { :action => url_for(:controller => "some", :action => "place") }
+
* Added :xhr => true/false option to verify so you can ensure that a request is coming from an Ajax call or not #1464 [Thomas Fuchs]
* Added tag_options as a third parameter to AssetHelper#auto_discovery_link_tag to control options like the title of the link #1430 [kevin.clark@gmail.com]
diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb
index 11f513c01c..d5e2a8b2dc 100644
--- a/actionpack/lib/action_view/helpers/javascript_helper.rb
+++ b/actionpack/lib/action_view/helpers/javascript_helper.rb
@@ -97,11 +97,19 @@ module ActionView
# reloading POST arrangement. Even though it's using Javascript to serialize the form elements, the form submission
# will work just like a regular submission as viewed by the receiving side (all elements available in @params).
# The options for specifying the target with :url and defining callbacks is the same as link_to_remote.
+ #
+ # A "fall-through" target for browsers that doesn't do Javascript can be specified with the :action/:method options on :html
+ #
+ # form_remote_tag :html => { :action => url_for(:controller => "some", :action => "place") }
+ #
+ # By default the fall-through action is the same as the one specified in the :url (and the default method is :post).
def form_remote_tag(options = {})
options[:form] = true
options[:html] ||= {}
options[:html][:onsubmit] = "#{remote_function(options)}; return false;"
+ options[:html][:action] = options[:html][:action] || url_for(options[:url])
+ options[:html][:method] = options[:html][:method] || "post"
tag("form", options[:html], true)
end