Skip to content
Browse files

Refactor content tag to not detect options Hash always

Only check for options and prefix arguments order once when running
content_tag_for with a collection.
  • Loading branch information...
1 parent ba77ff3 commit dcad38542039154156d79510dbdb1be4a6cfbf76 @carlosantoniodasilva carlosantoniodasilva committed Jan 17, 2012
Showing with 6 additions and 7 deletions.
  1. +6 −7 actionpack/lib/action_view/helpers/record_tag_helper.rb
View
13 actionpack/lib/action_view/helpers/record_tag_helper.rb
@@ -81,6 +81,8 @@ def div_for(record, *args, &block)
# <li id="person_123" class="person bar">...
#
def content_tag_for(tag_name, single_or_multiple_records, prefix = nil, options = nil, &block)
+ options, prefix = prefix, nil if prefix.is_a?(Hash)
+
Array.wrap(single_or_multiple_records).map do |single_record|
content_tag_for_single_record tag_name, single_record, prefix, options, &block
end.join("\n").html_safe
@@ -91,14 +93,11 @@ def content_tag_for(tag_name, single_or_multiple_records, prefix = nil, options
# Called by <tt>content_tag_for</tt> internally to render a content tag
# for each record.
def content_tag_for_single_record(tag_name, record, prefix, options, &block)
- options, prefix = prefix, nil if prefix.is_a?(Hash)
options = options ? options.dup : {}
- options.merge!(:class => "#{dom_class(record, prefix)} #{options[:class]}".strip, :id => dom_id(record, prefix))
- if block.arity == 0
- content_tag(tag_name, capture(&block), options)
- else
- content_tag(tag_name, capture(record, &block), options)
- end
+ options.merge!(:class => "#{dom_class(record, prefix)} #{options[:class]}".rstrip, :id => dom_id(record, prefix))
+
+ content = block.arity == 0 ? capture(&block) : capture(record, &block)
+ content_tag(tag_name, content, options)
end
end
end

0 comments on commit dcad385

Please sign in to comment.
Something went wrong with that request. Please try again.