Rails render_to_string

Dudedolf picture Dudedolf · Nov 8, 2016 · Viewed 17.4k times · Source

I am having difficulty with the rails render_to_string function. I have created an app using the --api flag, so i think this may be the issue as i have tested in 'full' rails apps and its works just fine.

Essentially i am calling:

body_html = render_to_string(template: 'reservations/print')

I have also tried

body_html = render_to_string('reservations/print')
body_html = render_to_string(partial: 'reservations/print')
body_html = render_to_string(partial: 'reservations/print.html.erb')

which should return the html for that template. The filename is print.html.erb and just has basic data i.e.

<p> Hello world. </p>

When i output the body_html it is empty.

I referenced this SO question What is the correct way to render_to_string in wicked pdf? and am also going to use Wicked PDF to generate a pdf file.

Many thanks

Answer

Dudedolf picture Dudedolf · Dec 8, 2016

Whilst I do not think this is the best solution doing the following worked.

ac = ActionController::Base.new()  

html_string = ac.render_to_string :template => 'path_to_file' e.g. 'post/show'

The Application Controller file in Rails API mode inherits from ActionController::API, so I guess the functionality to render is in ActionController::Base.