From: Ross Bamford Date: 2005-11-29T06:22:30+09:00 Subject: Re: string substitution question On Mon, 28 Nov 2005 12:00:37 -0000, wrote: > What is ERB? > > I had assumed that it would be possible to convert a single quote > string to a double quote string and that would take care of it. Is > that not possible. Maybe I'm looking at this the wrong way. > Substitution is done with the syntax you mention in my current version > of Rails. Is ERB what they use? > It is probably possible, maybe using the special quoting operators and so forth, but I imagine it is messy and problematic (?). There appears to be some automagic escaping going on when # is read into double quoted strings, or something like that. Rails does use ERB, and I think I'd still suggest it. It's 'Embedded Ruby'. With 1.8 it comes as standard (at least with 1.8.3). You can use it like: require 'erb' sturf = ['just', 'some', 'stuff'] src = "<% sturf.length.times do |i| %><%= sturf[i] %> <% end %>" text = ERB.new(src).result # => "just some stuff " You can pass a binding to the 'result' method, so that you can do the following: require 'erb' class SomeClazz def set_some_var @foo = 'bar' self end def render_text(s) ERB.new(s).result(binding) end end s = SomeClazz.new.set_some_var.render_text('<%= @foo %>') # => "bar" There is also a native version of ERB as a command - try 'erb' at your prompt (I found it's -x option quite helpful when debugging template problems). -- Ross Bamford - rosco@roscopeco.remove.co.uk