Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails render_to_string giving errors with partial view

I am getting ActionView::MissingTemplate error when using render_to_string method with partial views, below the code

 bizz = render_to_string(:partial => "biz_new",:layout => false)

Even though i have explicitly specified :layout => false, i am getting the MissingTemplate error always.

But render_to_string with normal views works fine in the same project. what could be the reason?

below the stack trace

ActionView::MissingTemplate (Missing partial businesses/biz_new with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:text, "/"], :locale=>[:en, :en]} in view paths "/home/ramesh/works/xxx/app/views", "/home/ramesh/works/xxx/vendor/plugins/asset_packager/app/views"):

like image 332
RameshVel Avatar asked Aug 16 '11 12:08

RameshVel


3 Answers

Try

 render_to_string("_biz_new", :formats => [:html], :layout => false, :locals => {:biz => @biz})

render_to_string needs the starting underscore and the .html extension.

like image 137
Mike Kijewski Avatar answered Nov 17 '22 05:11

Mike Kijewski


As Mike Kijewski mentioned, you can include the underscore at the beginning of the partial name, but if you use the .html in the end you will get a deprecation warning. A more straightforward way is this:

render_to_string(:partial => "folder_name/_partial_name", :formats => [:html], :layout => false, :locals => {:a_needed_argument_for_the_partial => @arg})
like image 3
marcelo Avatar answered Nov 17 '22 04:11

marcelo


It looks like rails is expecting the file to be in format txt. What's the file named ? Try naming it:

_biz_new.txt.erb 

-or-

businesses/_biz_new.txt.erb
like image 2
Luke Cowell Avatar answered Nov 17 '22 05:11

Luke Cowell