我有一个返回 JSON 的控制器方法。但有时该 JSON 对象的一部分应该包含一个呈现的、序列化的 HTML 视图。所以我的控制器方法有这样一行:
html = render_to_string :partial => 'foo/bar'
# ...
render json: {x: 'y', html: html}
但这失败了,因为 Rails 只寻找 JSON 视图!
ActionView::MissingTemplate(缺少部分 foo/bar 和 {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :coffee, :slim, :haml] }. […]
我该如何解决这个问题?
更新:我已经render_to_string
使用下面的语法将一个“级别”的布局设置为 html,但是当该布局呈现自己的部分时,同样的错误仍然存在!
html = render_to_string :partial => "foo/bar.html.haml"
这里肯定有解决方案,对吧?
更新 2:render_to_string :action => 'method_in_this_controller'
似乎在起作用。