views:

85

answers:

1

The helper method current_user is defined and made available as a helper in ApplicationController like this:

class ApplicationController < ActionController::Base
  helper_method :current_user
    def current_user
        return @current_user if defined?(@current_user)
        @current_user = current_user_session && current_user_session.record
    end
end

My question is how I can use the current_user helper method in a mailer template (obviously it will always return nil, but I'm trying to render a partial that depends on it).

Normally when I want to use helpers in a mailer, I do something like add_template_helper(SongsHelper), but since the helper is defined in a class instead of a module I'm not sure what to do

+2  A: 

I like to pass the user in a variable, then just use that in the template. It passes off the current_user call to the controller (where I usually deliver mail from).

Another solution is to put current_user and supporting methods into a module and mix it into both ApplicationController and also use with the helper method in your class that inherits from ActionMailer::Base. Take a look at the docs if you're interested in this method.

x1a4