Skip to content

Commit

Permalink
- added ActionView::PartialRenderer#merge_path_into_partial(path, par…
Browse files Browse the repository at this point in the history
…tial)

  fix issues/1951
  • Loading branch information
gramos committed Jul 24, 2011
1 parent 7621d13 commit dc1b0fd
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
18 changes: 16 additions & 2 deletions actionpack/lib/action_view/renderer/partial_renderer.rb
Expand Up @@ -362,14 +362,28 @@ def collection_without_template
def partial_path(object = @object)
@partial_names[object.class.name] ||= begin
object = object.to_model if object.respond_to?(:to_model)

object.class.model_name.partial_path.dup.tap do |partial|
path = @lookup_context.prefixes.first
partial.insert(0, "#{File.dirname(path)}/") if partial.include?(?/) && path.include?(?/)
merge_path_into_partial(path, partial)
end
end
end

def merge_path_into_partial(path, partial)
if path.include?(?/) && partial.include?(?/)
overlap = []
path_array = File.dirname(path).split('/')
partial_array = partial.split('/')[0..-3] # skip model dir & partial

path_array.each_with_index do |dir, index|
overlap << dir if dir == partial_array[index]
end

partial.gsub!(/^#{overlap.join('/')}\//,'')
partial.insert(0, "#{File.dirname(path)}/")
end
end

def retrieve_variable(path)
variable = @options[:as].try(:to_sym) || path[%r'_?(\w+)(\.\w+)*$', 1].to_sym
variable_counter = :"#{variable}_counter" if @collection
Expand Down
2 changes: 1 addition & 1 deletion actionpack/test/controller/render_test.rb
Expand Up @@ -17,7 +17,7 @@ def nested_partial_with_form_builder
module Quiz
class QuestionsController < ActionController::Base
def new
render :partial => Quiz::Question.new(:name => "Bruce Lee")
render :partial => Quiz::Question.new("Namespaced Partial")
end
end
end
Expand Down

0 comments on commit dc1b0fd

Please sign in to comment.