Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Tentatively accept the ":as or :object, but not both" solution

  • Loading branch information...
commit 9e62d6d1c0c53e8b03c9659500e2b5549a1fd2ec 1 parent 945a7df
@wycats wycats authored
View
43 actionpack/lib/action_view/render/partials.rb
@@ -184,6 +184,7 @@ def self.formats
def initialize(view_context, options, block)
partial = options[:partial]
+ @memo = {}
@view = view_context
@options = options
@locals = options[:locals] || {}
@@ -222,41 +223,39 @@ def render_collection
def collection_with_template(template)
options = @options
- segments, locals, as = [], @locals, options[:as]
+ segments, locals, as = [], @locals, options[:as] || :object
- [].tap do |segments|
- variable_name = template.variable_name
- counter_name = template.counter_name
- locals[counter_name] = -1
+ variable_name = template.variable_name
+ counter_name = template.counter_name
+ locals[counter_name] = -1
- collection.each do |object|
- locals[counter_name] += 1
- locals[variable_name] = object
- locals[as] = object if as
+ collection.each do |object|
+ locals[counter_name] += 1
+ locals[variable_name] = object
+ locals[as] = object if as
- segments << template.render(@view, locals)
- end
+ segments << template.render(@view, locals)
end
+ segments
end
def collection_without_template
options = @options
- segments, locals, as = [], @locals, options[:as]
+ segments, locals, as = [], @locals, options[:as] || :object
index, template = -1, nil
- [].tap do |segments|
- collection.each do |object|
- template = find_template(partial_path(object))
- locals[template.counter_name] = (index += 1)
- locals[template.variable_name] = object
- locals[as] = object if as
-
- segments << template.render(@view, locals)
- end
+ collection.each do |object|
+ template = find_template(partial_path(object))
+ locals[template.counter_name] = (index += 1)
+ locals[template.variable_name] = object
+ locals[as] = object if as
- @options[:_template] = template
+ segments << template.render(@view, locals)
end
+
+ @options[:_template] = template
+ segments
end
def render_template(template, object = @object)
View
2  actionpack/test/fixtures/test/_customer_with_var.erb
@@ -1 +1 @@
-<%= customer.name %> <%= object.name %> <%= customer_with_var.name %>
+<%= customer.name %> <%= customer.name %> <%= customer_with_var.name %>
Please sign in to comment.
Something went wrong with that request. Please try again.