render_to_string控制器中的部分格式错误

vre*_*sys 10 ruby-on-rails ruby-on-rails-3

在控制器上运行以下代码时出现以下错误.请注意:formats=>[:json]错误,即使:formats=>[:html]传递给render_to_string

我究竟做错了什么?有任何想法吗?实际上,下面的代码工作正常,不确定哪些更改会影响此错误.Rails版本:3.2.8

顺便说一下模板肯定到位:loc/_search_details.html.erb

额外的问题:我在哪里可以找到api文档,显示哪些参数可以传递给render_to_string以及它是如何工作的?

错误: ActionView :: MissingTemplate(缺少部分loc/search_details,{: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
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 4

请参阅这个问题这个问题。由于您正在发出 JSON 请求,因此您render_to_string期望您的部分内容为_search_details.json.erb. 您可以提供额外的 JSON 部分、重命名部分或将其添加到部分<% self.formats = [:json, :html] %>,或者尝试该问题的已接受答案中的解决方法。

  • 你错了,“render_to_string”的“:formats =&gt; [:html]”参数使得它首先查找“_search_details.html.erb”。我自己测试过,它可以工作,至少在 Rails 3.2.9 中是这样。 (3认同)