Forum: Ruby on Rails Rendering a partial without evaluating the erb tags

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Tim C. (Guest)
on 2009-05-19 23:45
Hi,
I have a partial (_contact.html) which looks something like this

<script id="contact_template" type="text/html">
  <h2><%= contact.name %></h2>
  <p><%= contact.id %></p>
</script>

I want to render this to the view exactly as it is show there.  I don't
want the erb tags evaluating.  When I try and render this using:
render :partial => 'contact.html'

I get an error because it is trying to evaluate the erb tags and call
the name method on the non-existent contact object.  I simply want to
render the text, as it is written, to the view.  How can I do this?

The reason for it is that I am investigating ways of JSON templating
(http://ejohn.org/blog/javascript-micro-templating/).  I am ultimately
aiming to make some of my partials reuseable between the rails code and
the javascript code so that I only have to maintain them in one place.
I want to carry on using <%= %> in the JSON templates.  How can I tell
rails just to render the partial as text and not try to evaluate it?
Thanks
pepe (Guest)
on 2009-05-20 16:43
(Received via mailing list)
The only way I would think you can do it is by reading the template
file into a variable in your controller and in your view escaping the
string.

Not pretty.

Pepe

On May 19, 3:45 pm, Tim C. <removed_email_address@domain.invalid>
Colin L. (Guest)
on 2009-05-20 17:02
(Received via mailing list)
2009/5/20 pepe <removed_email_address@domain.invalid>

>
> The only way I would think you can do it is by reading the template
> file into a variable in your controller and in your view escaping the
> string.
>
> Not pretty.
>
> Pepe


I think that having once read the template file into a variable in the
controller it can be displayed without escaping in the view.  The string
will not be parsed as erb

Colin
This topic is locked and can not be replied to.