OSDN Git Service

Refactor TabularFormBuilder field helpers (#2461).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 7 Jan 2009 20:03:33 +0000 (20:03 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 7 Jan 2009 20:03:33 +0000 (20:03 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2247 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/tabular_form_builder.rb

index 88e35a6..3ca2d7a 100644 (file)
@@ -28,24 +28,24 @@ class TabularFormBuilder < ActionView::Helpers::FormBuilder
   (field_helpers - %w(radio_button hidden_field) + %w(date_select)).each do |selector|
     src = <<-END_SRC
     def #{selector}(field, options = {}) 
-      return super if options.delete :no_label
-      label_text = l(options[:label]) if options[:label]
-      label_text ||= l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym)
-      label_text << @template.content_tag("span", " *", :class => "required") if options.delete(:required)
-      label = @template.content_tag("label", label_text, 
-                    :class => (@object && @object.errors[field] ? "error" : nil), 
-                    :for => (@object_name.to_s + "_" + field.to_s))
-      label + super
+      label_for_field(field, options) + super
     end
     END_SRC
     class_eval src, __FILE__, __LINE__
   end
   
   def select(field, choices, options = {}, html_options = {}) 
-    label_text = l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) + (options.delete(:required) ? @template.content_tag("span", " *", :class => "required"): "")
-    label = @template.content_tag("label", label_text, 
-                  :class => (@object && @object.errors[field] ? "error" : nil), 
-                  :for => (@object_name.to_s + "_" + field.to_s))
-    label + super
+    label_for_field(field, options) + super
+  end
+  
+  # Returns a label tag for the given field
+  def label_for_field(field, options = {})
+      return '' if options.delete(:no_label)
+      text = l(options[:label]) if options[:label]
+      text ||= l(("field_" + field.to_s.gsub(/\_id$/, "")).to_sym)
+      text << @template.content_tag("span", " *", :class => "required") if options.delete(:required)
+      @template.content_tag("label", text, 
+                                     :class => (@object && @object.errors[field] ? "error" : nil), 
+                                     :for => (@object_name.to_s + "_" + field.to_s))
   end
 end