diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-06 16:52:37 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-06 16:52:37 +0000 |
commit | 5600776e309b9c84f0cc075391b6130d07d83cfd (patch) | |
tree | 02280ad5e1a4765e103b92dd18302471d0878a10 /actionpack/lib | |
parent | 5dd3db86157ce2bd08c4ec07826d3aaf5c29f458 (diff) | |
download | rails-5600776e309b9c84f0cc075391b6130d07d83cfd.tar.gz rails-5600776e309b9c84f0cc075391b6130d07d83cfd.tar.bz2 rails-5600776e309b9c84f0cc075391b6130d07d83cfd.zip |
Fix incomplete work from [6951] that was hidden by test stubs. Closes #6432.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6959 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_view/helpers/form_helper.rb | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index 1a4aa0ca05..1886c7ab15 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -155,23 +155,24 @@ module ActionView # end # # If you don't need to attach a form to a model instance, then check out FormTagHelper#form_tag. - def form_for(record_or_name, *args, &proc) + def form_for(record_or_name_or_array, *args, &proc) raise ArgumentError, "Missing block" unless block_given? options = args.last.is_a?(Hash) ? args.pop : {} - case record_or_name + case record_or_name_or_array when String, Symbol - object_name = record_or_name + object_name = record_or_name_or_array when Array - object = record_or_name.last + object = record_or_name_or_array.last object_name = ActionController::RecordIdentifier.singular_class_name(object) - apply_form_for_options!(object, options, *record_or_name) + # apply_form_for_options!(object, options, *record_or_name_or_array) + apply_form_for_options!(record_or_name_or_array, options) args.unshift object else - object = record_or_name + object = record_or_name_or_array object_name = ActionController::RecordIdentifier.singular_class_name(object) - apply_form_for_options!(object, options) + apply_form_for_options!([ object ], options) args.unshift object end @@ -180,7 +181,9 @@ module ActionView concat('</form>', proc.binding) end - def apply_form_for_options!(object, options, *nested_objects) #:nodoc: + def apply_form_for_options!(object_or_array, options) #:nodoc: + object = object_or_array.is_a?(Array) ? object_or_array.last : object_or_array + html_options = if object.respond_to?(:new_record?) && object.new_record? { :class => dom_class(object, :new), :id => dom_id(object), :method => :post } @@ -190,7 +193,7 @@ module ActionView options[:html] ||= {} options[:html].reverse_merge!(html_options) - options[:url] ||= polymorphic_path(object, *nested_objects) + options[:url] ||= polymorphic_path(object_or_array) end # Creates a scope around a specific model object like form_for, but doesn't create the form tags themselves. This makes |