Merge pull request #2233 from gramos/fix-issue-1951-master
Fix issue 1951 master Namespaced model partial_path is wrong in namespaced controllers
This commit is contained in:
commit
d33eb07543
|
@ -362,14 +362,28 @@ module ActionView
|
|||
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
|
||||
|
|
|
@ -14,6 +14,14 @@ module Fun
|
|||
end
|
||||
end
|
||||
|
||||
module Quiz
|
||||
class QuestionsController < ActionController::Base
|
||||
def new
|
||||
render :partial => Quiz::Question.new("Namespaced Partial")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class TestController < ActionController::Base
|
||||
protect_from_forgery
|
||||
|
||||
|
@ -1251,6 +1259,12 @@ class RenderTest < ActionController::TestCase
|
|||
assert_template('fun/games/_form')
|
||||
end
|
||||
|
||||
def test_namespaced_object_partial
|
||||
@controller = Quiz::QuestionsController.new
|
||||
get :new
|
||||
assert_equal "Namespaced Partial", @response.body
|
||||
end
|
||||
|
||||
def test_partial_collection
|
||||
get :partial_collection
|
||||
assert_equal "Hello: davidHello: mary", @response.body
|
||||
|
|
Loading…
Reference in New Issue