render_to_string找不到我的erb模板?

时间:2014-08-12 23:48:19

标签: ruby-on-rails render

我试图像这样使用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

2 个答案:

答案 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')