Module: ActionController::Helpers::ClassMethods

Defined in:
actionpack/lib/action_controller/metal/helpers.rb

Instance Method Summary collapse

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

#helpersObject

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