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