views:

66

answers:

1

I am generating some json to send to a web service.

Currently I am creating a hash, loading it with the data and then calling to_json to generate the json string to send.

But I figure it would be much cleaner and more rails like if I could use a template in a .erb file to generate the json for me.

All the info I can find on erb files use it to create data to send back to the client. I dont want to do this, I am the client here!

How can I do this?

+2  A: 

ERB template engine is something you can use without Rails, actually.

require 'erb'

x = 42
template = ERB.new <<-EOF
  The value of x is: <%= x %>
EOF
puts template.result(binding)

In your case you can use a template like

{ foo: <%= model.foo.inspect %>, bar: <%= model.bar.inspect %> }

Store it in a .erb file, read the contents with File.open and then pass it to ERB.new, like in the example.

More info here: http://ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html

neutrino
Very elightening, thanks!
Mongus Pong