(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