diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index bf68e40466db50713a3ec155874db40f6ff67899..81c660086c8b83eb63461e3498ab93dc38850c61 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,8 +1,6 @@ *SVN* -* Added :method handling for other verbs to remote_form_tag and remote_form_for [DHH] - -* Expanded :method option in FormHelper#form_tag to allow for verbs other than GET and POST by automatically creating a hidden form field named _method, which will simulate the other verbs over post [DHH] +* Expanded :method option in FormTagHelper#form_tag, FormHelper#form_for, PrototypeHelper#remote_form_for, PrototypeHelper#remote_form_tag, and PrototypeHelper#link_to_remote to allow for verbs other than GET and POST by automatically creating a hidden form field named _method, which will simulate the other verbs over post [DHH] * Added :method option to UrlHelper#link_to, which allows for using other verbs than GET for the link. This replaces the :post option, which is now deprecated. Example: link_to "Destroy", person_url(:id => person), :method => :delete [DHH] diff --git a/actionpack/lib/action_view/helpers/javascripts/prototype.js b/actionpack/lib/action_view/helpers/javascripts/prototype.js index 0caf9cd7f0b7d902b0dada3752de348ed27c02cd..5ba3a30218c41a0841f9cc68f08b5e80683e65b9 100644 --- a/actionpack/lib/action_view/helpers/javascripts/prototype.js +++ b/actionpack/lib/action_view/helpers/javascripts/prototype.js @@ -669,6 +669,12 @@ Ajax.Request.prototype = Object.extend(new Ajax.Base(), { var parameters = this.options.parameters || ''; if (parameters.length > 0) parameters += '&_='; + /* Simulate other verbs over post */ + if (this.options.method != 'get' && this.options.method != 'post') { + parameters += (parameters.length > 0 ? '&' : '') + '_method=' + this.options.method + this.options.method = 'post' + } + try { this.url = url; if (this.options.method == 'get' && parameters.length > 0) diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb index bf32dd9f494a21356375ccfd31329051ed873ec6..4c593a40f2d512ac65ccaa0b124622835bfb9200 100644 --- a/actionpack/lib/action_view/helpers/prototype_helper.rb +++ b/actionpack/lib/action_view/helpers/prototype_helper.rb @@ -39,7 +39,7 @@ module PrototypeHelper # XMLHttpRequest. The result of that request can then be inserted into a # DOM object whose id can be specified with options[:update]. # Usually, the result would be a partial prepared by the controller with - # either render_partial or render_partial_collection. + # render :partial. # # Examples: # link_to_remote "Delete this post", :update => "posts", @@ -60,6 +60,12 @@ module PrototypeHelper # influence how the target DOM element is updated. It must be one of # :before, :top, :bottom, or :after. # + # The method used is by default POST. You can also specify GET or you + # can simulate PUT or DELETE over POST. All specified with options[:method] + # + # Example: + # link_to_remote "Destroy", person_url(:id => person), :method => :delete + # # By default, these remote requests are processed asynchronous during # which various JavaScript callbacks can be triggered (for progress # indicators and the likes). All callbacks get access to the