new(str, safe_level=nil, trim_mode=nil, eoutvar='_erbout') public

Constructs a new ERB object with the template specified in str.

An ERB object works by building a chunk of Ruby code that will output the completed template when run. If safe_level is set to a non-nil value, ERB code will be run in a separate thread with $SAFE set to the provided level.

If trim_mode is passed a String containing one or more of the following modifiers, ERB will adjust its code generation as listed:

%  enables Ruby code processing for lines beginning with %
<> omit newline for lines starting with <% and ending in %>
>  omit newline for lines ending in %>

eoutvar can be used to set the name of the variable ERB will build up its output in. This is useful when you need to run multiple ERB templates through the same binding and/or when you want to control where output ends up. Pass the name of the variable to be used inside a String.


require “erb”

# build data class class Listings

PRODUCT = { :name => "Chicken Fried Steak",
            :desc => "A well messages pattie, breaded and fried.",
            :cost => 9.95 }

attr_reader :product, :price

def initialize( product = "", price = "" )
  @product = product
  @price = price

def build
  b = binding
  # create and run templates, filling member data variables
  ERB.new(<<-'END_PRODUCT'.gsub(/^\s+/, ""), 0, "", "@product").result b
    <%= PRODUCT[:name] %>
    <%= PRODUCT[:desc] %>
  ERB.new(<<-'END_PRICE'.gsub(/^\s+/, ""), 0, "", "@price").result b
    <%= PRODUCT[:name] %> -- <%= PRODUCT[:cost] %>
    <%= PRODUCT[:desc] %>


# setup template data listings = Listings.new listings.build

puts listings.product + “n” + listings.price


Chicken Fried Steak A well messages pattie, breaded and fried.

Chicken Fried Steak – 9.95 A well messages pattie, breaded and fried.

Show source
Register or log in to add new notes.