Add #prepend_view_path and #append_view_path instance methods on ActionController::Base for consistency with the class methods. [rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8214 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1af084ecda
commit
87e506da53
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Add #prepend_view_path and #append_view_path instance methods on ActionController::Base for consistency with the class methods. [rick]
|
||||
|
||||
* Refactor sanitizer helpers into HTML classes and make it easy to swap them out with custom implementations. Closes #10129. [rick]
|
||||
|
||||
* Add deprecation for old subtemplate syntax for ActionMailer templates, use render :partial [rick]
|
||||
|
|
|
@ -430,7 +430,7 @@ module ActionController #:nodoc:
|
|||
|
||||
# Adds a view_path to the front of the view_paths array.
|
||||
# If the current class has no view paths, copy them from
|
||||
# the superclass
|
||||
# the superclass. This change will be visible for all future requests.
|
||||
#
|
||||
# ArticleController.prepend_view_path("views/default")
|
||||
# ArticleController.prepend_view_path(["views/default", "views/custom"])
|
||||
|
@ -442,7 +442,7 @@ module ActionController #:nodoc:
|
|||
|
||||
# Adds a view_path to the end of the view_paths array.
|
||||
# If the current class has no view paths, copy them from
|
||||
# the superclass
|
||||
# the superclass. This change will be visible for all future requests.
|
||||
#
|
||||
# ArticleController.append_view_path("views/default")
|
||||
# ArticleController.append_view_path(["views/default", "views/custom"])
|
||||
|
@ -636,7 +636,6 @@ module ActionController #:nodoc:
|
|||
request.session_options && request.session_options[:disabled] != false
|
||||
end
|
||||
|
||||
|
||||
self.view_paths = []
|
||||
|
||||
# View load paths for controller.
|
||||
|
@ -647,7 +646,27 @@ module ActionController #:nodoc:
|
|||
def view_paths=(value)
|
||||
(@template || self.class).view_paths = value
|
||||
end
|
||||
|
||||
# Adds a view_path to the front of the view_paths array.
|
||||
# This change affects the current request only.
|
||||
#
|
||||
# self.prepend_view_path("views/default")
|
||||
# self.prepend_view_path(["views/default", "views/custom"])
|
||||
#
|
||||
def prepend_view_path(path)
|
||||
(@template || self.class).prepend_view_path(path)
|
||||
end
|
||||
|
||||
# Adds a view_path to the end of the view_paths array.
|
||||
# This change affects the current request only.
|
||||
#
|
||||
# self.append_view_path("views/default")
|
||||
# self.append_view_path(["views/default", "views/custom"])
|
||||
#
|
||||
def append_view_path(path)
|
||||
(@template || self.class).append_view_path(path)
|
||||
end
|
||||
|
||||
protected
|
||||
# Renders the content that will be returned to the browser as the response body.
|
||||
#
|
||||
|
|
|
@ -265,7 +265,7 @@ module ActionView #:nodoc:
|
|||
end
|
||||
|
||||
def initialize(view_paths = [], assigns_for_first_render = {}, controller = nil)#:nodoc:
|
||||
@view_paths = view_paths.respond_to?(:find) ? view_paths : [*view_paths].compact
|
||||
@view_paths = view_paths.respond_to?(:find) ? view_paths.dup : [*view_paths].compact
|
||||
@assigns = assigns_for_first_render
|
||||
@assigns_added = nil
|
||||
@controller = controller
|
||||
|
@ -472,6 +472,26 @@ If you are rendering a subtemplate, you must now use controller-like partial syn
|
|||
TEMPLATE_HANDLER_PREFERENCES[template_format] || DEFAULT_TEMPLATE_HANDLER_PREFERENCE
|
||||
end
|
||||
|
||||
# Adds a view_path to the front of the view_paths array.
|
||||
# This change affects the current request only.
|
||||
#
|
||||
# @template.prepend_view_path("views/default")
|
||||
# @template.prepend_view_path(["views/default", "views/custom"])
|
||||
#
|
||||
def prepend_view_path(path)
|
||||
@view_paths.unshift(*path)
|
||||
end
|
||||
|
||||
# Adds a view_path to the end of the view_paths array.
|
||||
# This change affects the current request only.
|
||||
#
|
||||
# @template.append_view_path("views/default")
|
||||
# @template.append_view_path(["views/default", "views/custom"])
|
||||
#
|
||||
def append_view_path(path)
|
||||
@view_paths.push(*path)
|
||||
end
|
||||
|
||||
private
|
||||
def find_full_template_path(template_path, extension)
|
||||
file_name = "#{template_path}.#{extension}"
|
||||
|
|
|
@ -47,7 +47,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
|||
assert_equal [ LOAD_PATH_ROOT ], @controller.view_paths
|
||||
end
|
||||
|
||||
def test_template_appends_path_correctly
|
||||
def test_controller_appends_view_path_correctly
|
||||
TestController.append_view_path 'foo'
|
||||
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths
|
||||
|
||||
|
@ -55,7 +55,7 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
|||
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
|
||||
end
|
||||
|
||||
def test_template_prepends_path_correctly
|
||||
def test_controller_prepends_view_path_correctly
|
||||
TestController.prepend_view_path 'baz'
|
||||
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||
|
||||
|
@ -63,6 +63,30 @@ class ViewLoadPathsTest < Test::Unit::TestCase
|
|||
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||
end
|
||||
|
||||
def test_template_appends_view_path_correctly
|
||||
@controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
|
||||
class_view_paths = TestController.view_paths
|
||||
|
||||
@controller.append_view_path 'foo'
|
||||
assert_equal [LOAD_PATH_ROOT, 'foo'], @controller.view_paths
|
||||
|
||||
@controller.append_view_path(%w(bar baz))
|
||||
assert_equal [LOAD_PATH_ROOT, 'foo', 'bar', 'baz'], @controller.view_paths
|
||||
assert_equal class_view_paths, TestController.view_paths
|
||||
end
|
||||
|
||||
def test_template_prepends_view_path_correctly
|
||||
@controller.instance_variable_set :@template, ActionView::Base.new(TestController.view_paths, {}, @controller)
|
||||
class_view_paths = TestController.view_paths
|
||||
|
||||
@controller.prepend_view_path 'baz'
|
||||
assert_equal ['baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||
|
||||
@controller.prepend_view_path(%w(foo bar))
|
||||
assert_equal ['foo', 'bar', 'baz', LOAD_PATH_ROOT], @controller.view_paths
|
||||
assert_equal class_view_paths, TestController.view_paths
|
||||
end
|
||||
|
||||
def test_view_paths
|
||||
get :hello_world
|
||||
assert_response :success
|
||||
|
|
Loading…
Reference in New Issue