Module: ActionMailer::Helpers::ClassMethods
- Defined in:
- lib/action_mailer/helpers.rb
Instance Method Summary collapse
-
#add_template_helper(helper_module) ⇒ Object
Makes all the (instance) methods in the helper module available to templates rendered through this controller.
-
#helper(*args, &block) ⇒ Object
Declare a helper: helper :foo requires ‘foo_helper’ and includes FooHelper in the template class.
-
#helper_attr(*attrs) ⇒ Object
Declare a controller attribute as a helper.
-
#helper_method(*methods) ⇒ Object
Declare a controller method as a helper.
Instance Method Details
#add_template_helper(helper_module) ⇒ Object
Makes all the (instance) methods in the helper module available to templates rendered through this controller. See ActionView::Helpers (classes/ActionView/Helpers.html) for more about making your own helper modules available to the templates.
29 30 31 |
# File 'lib/action_mailer/helpers.rb', line 29 def add_template_helper(helper_module) #:nodoc: master_helper_module.module_eval "include #{helper_module}" end |
#helper(*args, &block) ⇒ Object
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() "#{} 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.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/action_mailer/helpers.rb', line 42 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 |
#helper_attr(*attrs) ⇒ Object
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.
88 89 90 |
# File 'lib/action_mailer/helpers.rb', line 88 def helper_attr(*attrs) attrs.flatten.each { |attr| helper_method(attr, "#{attr}=") } end |
#helper_method(*methods) ⇒ Object
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.
73 74 75 76 77 78 79 80 81 |
# File 'lib/action_mailer/helpers.rb', line 73 def helper_method(*methods) methods.flatten.each do |method| master_helper_module.module_eval <<-end_eval def #{method}(*args, &block) controller.__send__(%(#{method}), *args, &block) end end_eval end end |