mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add clear_helpers as a way to clean up all helpers added to this controller, maintaing just the helper with the same name as the controller.
This commit is contained in:
parent
84cab320bc
commit
66ef92272c
3 changed files with 31 additions and 2 deletions
|
@ -95,6 +95,13 @@ module AbstractController
|
|||
_helpers.module_eval(&block) if block_given?
|
||||
end
|
||||
|
||||
# Clears up all existing helpers in this class, only keeping the helper
|
||||
# with the same name as this class.
|
||||
def clear_helpers
|
||||
self._helpers = Module.new
|
||||
default_helper_module! unless anonymous?
|
||||
end
|
||||
|
||||
private
|
||||
# Makes all the (instance) methods in the helper module available to templates
|
||||
# rendered through this controller.
|
||||
|
|
|
@ -38,6 +38,10 @@ module AbstractController
|
|||
end
|
||||
end
|
||||
|
||||
class ::HelperyTestController < AbstractHelpers
|
||||
clear_helpers
|
||||
end
|
||||
|
||||
class AbstractHelpersBlock < ControllerWithHelpers
|
||||
helper do
|
||||
include ::AbstractController::Testing::HelperyTest
|
||||
|
@ -45,7 +49,6 @@ module AbstractController
|
|||
end
|
||||
|
||||
class TestHelpers < ActiveSupport::TestCase
|
||||
|
||||
def setup
|
||||
@controller = AbstractHelpers.new
|
||||
end
|
||||
|
@ -74,8 +77,22 @@ module AbstractController
|
|||
@controller.process(:with_module)
|
||||
assert_equal "Module Included", @controller.response_body
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class ClearHelpersTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
@controller = HelperyTestController.new
|
||||
end
|
||||
|
||||
def test_clears_up_previous_helpers
|
||||
@controller.process(:with_symbol)
|
||||
assert_equal "I respond to bare_a: false", @controller.response_body
|
||||
end
|
||||
|
||||
def test_includes_controller_default_helper
|
||||
@controller.process(:with_block)
|
||||
assert_equal "Hello Default", @controller.response_body
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
5
actionpack/test/fixtures/helpers/helpery_test_helper.rb
vendored
Normal file
5
actionpack/test/fixtures/helpers/helpery_test_helper.rb
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
module HelperyTestHelper
|
||||
def helpery_test
|
||||
"Default"
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue