rails render_to_string 在部分视图中给出错误

问题描述 投票:0回答:5

在代码下方使用带有部分视图的 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”):

ruby-on-rails ruby view partial-views
5个回答
10
投票

尝试

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

render_to_string 需要以下划线开头和 .html 扩展名。


3
投票

正如 Mike Kijewski 提到的,您可以在部分名称的开头包含下划线,但如果您最后使用 .html,您将收到弃用警告。更直接的方法是这样的:

render_to_string(:partial => "folder_name/_partial_name", :formats => [:html], :layout => false, :locals => {:a_needed_argument_for_the_partial => @arg})

2
投票

看起来 Rails 期望文件采用 txt 格式。文件名为什么?尝试命名它:

_biz_new.txt.erb 

-或-

businesses/_biz_new.txt.erb

0
投票

我在使用

formats: "html"
时遇到了问题,但需要更改为像
formats: :html
这样的符号。


-1
投票

有类似问题。

我找到了解决方案:

render_to_string(model, :formats => [:html])

© www.soinside.com 2019 - 2024. All rights reserved.