The template helpers serves to relieve the templates from including the same inline code again and again. It’s a set of standardized methods for working with forms (FormHelper), dates (DateHelper), texts (TextHelper), and Active Records (ActiveRecordHelper) that’s available to all templates by default.
It’s also really easy to make your own helpers and it’s much encouraged to keep the template files free from complicated logic. It’s even encouraged to bundle common compositions of methods from other helpers (often the common helpers) as they’re used by the specific application.
Defining a helper requires you to include a specialized append_features method that makes them capable of configuring their integration upon inclusion in a controller, like this:
module MyHelper
def self.append_features(controller)
controller.ancestors.include?(ActionController::Base) ?
controller.add_template_helper(self) : super
end
def hello_world() "hello world" end
end
MyHelper can now be included in a controller, like this:
require 'my_helper'
class MyController < ActionController::Base
include MyHelper
end
…and, same as above, used in any template rendered from MyController, like this:
Let’s hear what the helper has to say: <%= hello_world %>