Method: AbstractController::Helpers::ClassMethods#helper_method
- Defined in:
- lib/abstract_controller/helpers.rb
#helper_method(*methods) ⇒ Object
Declare a controller method as a helper. For example, the following makes the current_user and logged_in? controller methods available to the view:
class ApplicationController < ActionController::Base
helper_method :current_user, :logged_in?
private
def current_user
@current_user ||= User.find_by(id: session[:user])
end
def logged_in?
current_user != nil
end
end
In a view:
<% if logged_in? -%>Welcome, <%= current_user.name %><% end -%>
#### Parameters
-
‘method[, method]` - A name or names of a method on the controller to be made available on the view.
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/abstract_controller/helpers.rb', line 128 def helper_method(*methods) methods.flatten! self._helper_methods += methods location = caller_locations(1, 1).first file, line = location.path, location.lineno methods.each do |method| # def current_user(...) # controller.send(:'current_user', ...) # end _helpers_for_modification.class_eval " def \#{method}(...)\n controller.send(:'\#{method}', ...)\n end\n ruby_eval\n end\nend\n".lines.map(&:strip).join(";"), file, line |