Methods
Instance Public 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: show
# File rails/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 = %r -- (.*?)(\.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: show
# File rails/actionmailer/lib/action_mailer/helpers.rb, line 86 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: show
# File rails/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) controller.send(%(#{method}), *args, &block) end " end end