Module ActionMailer::Helpers::ClassMethods
In: actionmailer/lib/action_mailer/helpers.rb

Methods

Public Instance methods

Declare a helper:

  helper :foo

requires ‘foo_helper’ and includes FooHelper in the template class.

  helper FooHelper

includes FooHelper in the template class.

  helper { def foo() "#{bar} is the very best" end }

evaluates the block in the template class, adding method foo.

  helper(:three, BlindHelper) { def mice() 'mice' end }

does all three.

[Source]

# File actionmailer/lib/action_mailer/helpers.rb, line 40
      def helper(*args, &block)
        args.flatten.each do |arg|
          case arg
            when Module
              add_template_helper(arg)
            when String, Symbol
              file_name  = arg.to_s.underscore + '_helper'
              class_name = file_name.camelize
                
              begin
                require_dependency(file_name)
              rescue LoadError => load_error
                requiree = / -- (.*?)(\.rb)?$/.match(load_error).to_a[1]
                msg = (requiree == file_name) ? "Missing helper file helpers/#{file_name}.rb" : "Can't load file: #{requiree}"
                raise LoadError.new(msg).copy_blame!(load_error)
              end

              add_template_helper(class_name.constantize)
            else
              raise ArgumentError, 'helper expects String, Symbol, or Module argument'
          end
        end

        # Evaluate block in template class if given.
        master_helper_module.module_eval(&block) if block_given?
      end

Declare a controller attribute as a helper. For example,

  helper_attr :name
  attr_accessor :name

makes the name and name= controller methods available in the view. The is a convenience wrapper for helper_method.

[Source]

# File actionmailer/lib/action_mailer/helpers.rb, line 87
      def helper_attr(*attrs)
        attrs.flatten.each { |attr| helper_method(attr, "#{attr}=") }
      end

Declare a controller method as a helper. For example,

  helper_method :link_to
  def link_to(name, options) ... end

makes the link_to controller method available in the view.

[Source]

# File actionmailer/lib/action_mailer/helpers.rb, line 71
      def helper_method(*methods)
        methods.flatten.each do |method|
          master_helper_module.module_eval "def \#{method}(*args, &block)\ncontroller.send(%(\#{method}), *args, &block)\nend\n"
        end
      end

Private Instance methods

[Source]

# File actionmailer/lib/action_mailer/helpers.rb, line 92
        def inherited_with_helper(child)
          inherited_without_helper(child)
          begin
            child.master_helper_module = Module.new
            child.master_helper_module.send :include, master_helper_module
            child.helper child.name.underscore
          rescue MissingSourceFile => e
            raise unless e.is_missing?("helpers/#{child.name.underscore}_helper")
          end
        end

[Validate]