Ruby on Rails Saturday, July 3, 2010

My skeletal renderer looks like this

ActionController.add_renderer :pdf do |template, options|
html = render_to_string(template, options)
...
end

The trouble here is that render_to_string looks for a template for MIME
type PDF, e.g. show.pdf.erb. Unfortunately, that's not what I want. I
need to get HTML. I haven't found a straightforward option to achieve
this.

html = render_to_string(options.merge(
:template => "#{template}.html")

That's not pretty, but gets me halfway there. However, when I call

render :pdf => 'show', :layout => 'print'

the layout is passed through to render_to_string, but ignored. If I
rename layouts/print.html.erb to layouts/print.pdf.erb, it works as long
as all partials used by that layout are available in pdf variants, too.

Now, I see that this behavior might be useful most of the time, but this
time it is exactly not what I want. Is there a *clean* way to make
render_to_string do what I want?

Michael

--
Michael Schuerig
mailto:michael@schuerig.de
http://www.schuerig.de/michael/

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment