我试图像这样使用render_to_string
:
html_result = render_to_string(:template => 'template_160x600', layout: 'art_layout')
我一直收到以下错误:
缺少模板/ template_160x600
但是,如果我正常渲染,我没有任何问题:
render 'template_160x600', layout: 'art_layout'
我在这里缺少什么?
编辑:
我添加了这样的视图目录:
render 'arts/template_160x600', layout: 'art_layout'
但现在我得到:
Missing template arts/show, application/show with
答案 0 :(得分:1)
我相信发生的事情是即使您使用render_to_string
,Rails也会尝试在之后为show视图执行默认渲染。
因此,如果在render_to_string之后你不想渲染任何视图,那么就这样做:
html_result = render_to_string(:template => 'art/template_160x600', layout: 'art_layout')
head :ok
或
html_result = render_to_string(:template => 'art/template_160x600', layout: 'art_layout')
render nothing: true
答案 1 :(得分:0)
渲染模板时,您必须指定模板搜索路径根目录的路径(app/views
为一个),因此,如果您的模板位于app/views/art
,则可以使用:
html_result = render_to_string(:template => 'art/template_160x600', layout: 'art_layout')