Module: ActionController::Helpers::ClassMethods
- Defined in:
- actionpack/lib/action_controller/metal/helpers.rb
Instance Method Summary collapse
-
#all_helpers_from_path(path) ⇒ Object
Returns a list of helper names in a given path.
-
#helper_attr(*attrs) ⇒ Object
Declares helper accessors for controller attributes.
-
#helpers ⇒ Object
Provides a proxy to access helper methods from outside the view.
-
#modules_for_helpers(args) ⇒ Object
Overwrite modules_for_helpers to accept :all as argument, which loads all helpers in helpers_path.
Instance Method Details
#all_helpers_from_path(path) ⇒ Object
Returns a list of helper names in a given path.
ActionController::Base.all_helpers_from_path 'app/helpers'
# => ["application", "chart", "rubygems"]
106 107 108 109 110 111 112 113 |
# File 'actionpack/lib/action_controller/metal/helpers.rb', line 106 def all_helpers_from_path(path) helpers = Array(path).flat_map do |_path| names = Dir["#{_path}/**/*_helper.rb"].map { |file| file[_path.to_s.size + 1..-"_helper.rb".size - 1] } names.sort! end helpers.uniq! helpers end |
#helper_attr(*attrs) ⇒ Object
Declares helper accessors for controller attributes. For example, the following adds new name
and name=
instance methods to a controller and makes them available to the view:
attr_accessor :name
helper_attr :name
Parameters
-
attrs
- Names of attributes to be converted into helpers.
71 72 73 |
# File 'actionpack/lib/action_controller/metal/helpers.rb', line 71 def helper_attr(*attrs) attrs.flatten.each { |attr| helper_method(attr, "#{attr}=") } end |
#helpers ⇒ Object
Provides a proxy to access helper methods from outside the view.
Note that the proxy is rendered under a different view context. This may cause incorrect behaviour with capture methods. Consider using helper instead when using capture
.
81 82 83 84 85 86 87 |
# File 'actionpack/lib/action_controller/metal/helpers.rb', line 81 def helpers @helper_proxy ||= begin proxy = ActionView::Base.empty proxy.config = config.inheritable_copy proxy.extend(_helpers) end end |
#modules_for_helpers(args) ⇒ Object
Overwrite modules_for_helpers to accept :all as argument, which loads all helpers in helpers_path.
Parameters
-
args
- A list of helpers
Returns
-
array
- A normalized list of modules for the list of helpers provided.
97 98 99 100 |
# File 'actionpack/lib/action_controller/metal/helpers.rb', line 97 def modules_for_helpers(args) args += all_application_helpers if args.delete(:all) super(args) end |