diff options
author | Bob Remeika <bob.remeika@gmail.com> | 2009-11-03 23:18:25 -0800 |
---|---|---|
committer | Stefan Penner <stefan.penner@gmail.com> | 2010-01-27 12:44:29 -0600 |
commit | 5ced1225fa2048b327c9afb8be48f99dff9841ae (patch) | |
tree | 52414c1514a033de930a18ff8e0124c537c06a6e /actionpack/lib/action_view/helpers/form_helper.rb | |
parent | c1ce17a5f428dc48711299cfd5851798f1018a33 (diff) | |
download | rails-5ced1225fa2048b327c9afb8be48f99dff9841ae.tar.gz rails-5ced1225fa2048b327c9afb8be48f99dff9841ae.tar.bz2 rails-5ced1225fa2048b327c9afb8be48f99dff9841ae.zip |
Applied Yehuda's patch; Sharing extract_object_name_for_form! between form_helper and ajax_helper; Added script_decorator helper
Diffstat (limited to 'actionpack/lib/action_view/helpers/form_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/form_helper.rb | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index 20e9916d62..1615f135b4 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -262,23 +262,8 @@ module ActionView # FormTagHelper#form_tag. def form_for(record_or_name_or_array, *args, &proc) raise ArgumentError, "Missing block" unless block_given? - options = args.extract_options! - - case record_or_name_or_array - when String, Symbol - object_name = record_or_name_or_array - when Array - object = record_or_name_or_array.last - object_name = ActionController::RecordIdentifier.singular_class_name(object) - apply_form_for_options!(record_or_name_or_array, options) - args.unshift object - else - object = record_or_name_or_array - object_name = ActionController::RecordIdentifier.singular_class_name(object) - apply_form_for_options!([object], options) - args.unshift object - end + object_name = extract_object_name_for_form!(args, options, record_or_name_or_array) concat(form_tag(options.delete(:url) || {}, options.delete(:html) || {})) fields_for(object_name, *(args << options), &proc) @@ -742,6 +727,25 @@ module ActionView def radio_button(object_name, method, tag_value, options = {}) InstanceTag.new(object_name, method, self, options.delete(:object)).to_radio_button_tag(tag_value, options) end + + private + def extract_object_name_for_form!(args, options, record_or_name_or_array) + case record_or_name_or_array + when String, Symbol + object_name = record_or_name_or_array + when Array + object = record_or_name_or_array.last + object_name = ActionController::RecordIdentifier.singular_class_name(object) + apply_form_for_options!(record_or_name_or_array, options) + args.unshift object + else + object = record_or_name_or_array + object_name = ActionController::RecordIdentifier.singular_class_name(object) + apply_form_for_options!([object], options) + args.unshift object + end + object_name + end end module InstanceTagMethods #:nodoc: |