Skip to content

Commit

Permalink
Refactor content tag to not detect options Hash always
Browse files Browse the repository at this point in the history
Only check for options and prefix arguments order once when running
content_tag_for with a collection.
  • Loading branch information
carlosantoniodasilva committed Jan 18, 2012
1 parent ba77ff3 commit dcad385
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions actionpack/lib/action_view/helpers/record_tag_helper.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit dcad385

Please sign in to comment.