I get the below error when running the below code on a controller. Please note the :formats=>[:json] in the error, even though :formats=>[:html] is passed into render_to_string
What am I doing wrong? Any ideas? Actually, the code below worked fine before, not sure what changes influenced this error. Rails version: 3.2.8
btw the template is definitely in place: loc/_search_details.html.erb
Bonus question: where can I find the api documentation showing what parameters can be passed to render_to_string and how it works?
Error: ActionView::MissingTemplate (Missing partial loc/search_details with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :coffee]}.
  respond_to do |format|
    format.json { 
      @detail_str = render_to_string(:partial => 'loc/search_details', :layout => false, :formats=>[:html], :locals => {:beer_results => @beer_results})
      @list_str = render_to_string(:partial => 'loc/search_list', :layout => false,:formats=>[:html], :locals => {:beer_results => @beer_results})
      render :json => {:results => @results_hash, :result_details => @detail_str, :result_list => @list_str }
      }
  end
                See this question and this issue. Since you're making a JSON request your render_to_string is expecting your partial to be _search_details.json.erb. You can either provide an additional JSON partial, rename the partial or add this to the partial <% self.formats = [:json, :html] %>, or alternatively, try the workaround in the accepted answer to that question.
What if you try
render_to_string(:partial => 'loc/search_details.html.erb', :layout => false, :locals => {:beer_results => @beer_results})
Or
with_format("html") { render_to_string(:partial => 'loc/search_details', :layout => false, :locals => {:beer_results => @beer_results}) }
And add the method
private
def with_format(format, &block)
  old_format = @template_format
  @template_format = format
  result = block.call
  @template_format = old_format
  return result
end
Source: How do I render a partial of a different format in Rails?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With