在代码下方使用带有部分视图的 render_to_string 方法时,出现
ActionView::MissingTemplate
错误
bizz = render_to_string(:partial => "biz_new",:layout => false)
即使我已明确指定
:layout => false
,我总是收到 MissingTemplate 错误。
但是使用普通视图的 render_to_string 在同一项目中工作得很好。可能是什么原因?
在堆栈跟踪下方
ActionView::MissingTemplate(缺少部分商家/biz_new {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:text, 视图路径中的 "/"], :locale=>[:en, :en]} “/home/ramesh/works/xxx/app/views”, “/home/ramesh/works/xxx/vendor/plugins/asset_packager/app/views”):
尝试
render_to_string("_biz_new", :formats => [:html], :layout => false, :locals => {:biz => @biz})
render_to_string 需要以下划线开头和 .html 扩展名。
正如 Mike Kijewski 提到的,您可以在部分名称的开头包含下划线,但如果您最后使用 .html,您将收到弃用警告。更直接的方法是这样的:
render_to_string(:partial => "folder_name/_partial_name", :formats => [:html], :layout => false, :locals => {:a_needed_argument_for_the_partial => @arg})
看起来 Rails 期望文件采用 txt 格式。文件名为什么?尝试命名它:
_biz_new.txt.erb
-或-
businesses/_biz_new.txt.erb
我在使用
formats: "html"
时遇到了问题,但需要更改为像 formats: :html
这样的符号。
有类似问题。
我找到了解决方案:
render_to_string(model, :formats => [:html])