diff --git a/lib/tabular_form_builder.rb b/lib/tabular_form_builder.rb index 88e35a6..3ca2d7a 100644 --- a/lib/tabular_form_builder.rb +++ b/lib/tabular_form_builder.rb @@ -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