From 5d61d2336cceebf388369f22fa4cfbc07983bde5 Mon Sep 17 00:00:00 2001 From: Marcel Molina Date: Tue, 25 Apr 2006 19:38:52 +0000 Subject: Refactor various InstanceTag instance method to class methods. Closes #4800. [skaes@web.de] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4272 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_view/helpers/date_helper.rb | 2 + actionpack/lib/action_view/helpers/form_helper.rb | 82 ++++++++++++++-------- .../lib/action_view/helpers/form_options_helper.rb | 4 ++ 3 files changed, 59 insertions(+), 29 deletions(-) (limited to 'actionpack/lib/action_view/helpers') diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb index 0040095669..4920763b50 100755 --- a/actionpack/lib/action_view/helpers/date_helper.rb +++ b/actionpack/lib/action_view/helpers/date_helper.rb @@ -258,6 +258,7 @@ module ActionView defaults = { :discard_type => true } options = defaults.merge(options) options_with_prefix = Proc.new { |position| options.merge(:prefix => "#{@object_name}[#{@method_name}(#{position}i)]") } + value = value(object) date = options[:include_blank] ? (value || 0) : (value || Date.today) date_select = '' @@ -282,6 +283,7 @@ module ActionView defaults = { :discard_type => true } options = defaults.merge(options) options_with_prefix = Proc.new { |position| options.merge(:prefix => "#{@object_name}[#{@method_name}(#{position}i)]") } + value = value(object) datetime = options[:include_blank] ? (value || nil) : (value || Time.now) datetime_select = select_year(datetime, options_with_prefix.call(1)) diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index 7c8748d604..fd4fe5f12e 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -250,7 +250,7 @@ module ActionView options.delete("size") end options["type"] = field_type - options["value"] ||= value_before_type_cast unless field_type == "file" + options["value"] ||= value_before_type_cast(object) unless field_type == "file" add_default_name_and_id(options) tag("input", options) end @@ -259,7 +259,13 @@ module ActionView options = DEFAULT_RADIO_OPTIONS.merge(options.stringify_keys) options["type"] = "radio" options["value"] = tag_value - options["checked"] = "checked" if value.to_s == tag_value.to_s + if options.has_key?("checked") + cv = options.delete "checked" + checked = cv == true || cv == "checked" + else + checked = self.class.radio_button_checked?(value(object), tag_value) + end + options["checked"] = "checked" if checked pretty_tag_value = tag_value.to_s.gsub(/\s/, "_").gsub(/\W/, "").downcase options["id"] = @auto_index ? "#{@object_name}_#{@auto_index}_#{@method_name}_#{pretty_tag_value}" : @@ -271,37 +277,27 @@ module ActionView def to_text_area_tag(options = {}) options = DEFAULT_TEXT_AREA_OPTIONS.merge(options.stringify_keys) add_default_name_and_id(options) - content_tag("textarea", html_escape(options.delete('value') || value_before_type_cast), options) + content_tag("textarea", html_escape(options.delete('value') || value_before_type_cast(object)), options) end def to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0") options = options.stringify_keys options["type"] = "checkbox" options["value"] = checked_value - checked = case value - when TrueClass, FalseClass - value - when NilClass - false - when Integer - value != 0 - when String - value == checked_value - else - value.to_i != 0 - end - if checked || options["checked"] == "checked" - options["checked"] = "checked" + if options.has_key?("checked") + cv = options.delete "checked" + checked = cv == true || cv == "checked" else - options.delete("checked") + checked = self.class.check_box_checked?(value(object), checked_value) end + options["checked"] = "checked" if checked add_default_name_and_id(options) tag("input", options) << tag("input", "name" => options["name"], "type" => "hidden", "value" => unchecked_value) end def to_date_tag() defaults = DEFAULT_DATE_OPTIONS.dup - date = value || Date.today + date = value(object) || Date.today options = Proc.new { |position| defaults.merge(:prefix => "#{@object_name}[#{@method_name}(#{position}i)]") } html_day_select(date, options.call(3)) + html_month_select(date, options.call(2)) + @@ -311,6 +307,7 @@ module ActionView def to_boolean_select_tag(options = {}) options = options.stringify_keys add_default_name_and_id(options) + value = value(object) tag_text = "