如何在Rails中构建JSON响应时呈现HTML视图?
我有一个返回JSON的控制器方法。但是有时候这个JSON对象的一部分应该包含一个渲染的序列化的HTML视图。所以,我的控制器方法有这样一行:如何在Rails中构建JSON响应时呈现HTML视图?
html = render_to_string :partial => 'foo/bar'
# ...
render json: {x: 'y', html: html}
但失败了,因为Rails的只是寻找JSON的意见!
::的ActionView MissingTemplate(缺少含{局部富/栏:区域设置=> [:EN]:格式=> [:JSON]:处理程序=> [:ERB,:助洗剂,:咖啡, :苗条,:HAML]} [...]
我怎样才能解决这个
更新:?我已经得到了一个布局的 “级别”,以render_to_string
为html使用下面的语法,但当布局呈现自己的分部时,同样的错误依然存在!
html = render_to_string :partial => "foo/bar.html.haml"
当然,这里有一个解决方案,对吧?
更新2:render_to_string :action => 'method_in_this_controller'
似乎做的伎俩。
我写类似的东西在我的行动:
def show
...
respond_to do |format|
format.js { render :json => data }
end
end
也许它会帮助你。
你在哪里在你的方法中将模板呈现为HTML? –
您确定您有'apps/views/foo/_bar。*'文件吗?我能够呈现HTML作为一个JSON参数与How do I render a partial to a string?
respond_to do |format|
format.html { redirect_to post_path(post) }
format.js {
render json: {
error: flash[:error],
content: (render_to_string partial: '/comments/comment', locals: {comment: comment}, layout: false)
}
}
end
重复腌好的答案,因为我遇到了这个确切的问题及其对我工作。
尝试:
html = render_to_string :partial => 'foo/bar', :formats=>[:html]
尝试:'HTML = render_to_string:局部=> '富/酒吧',:格式=> [:HTML]' – Yanhao
感谢您的建议!我可能做错了,但这似乎并没有办法。 –
提出2个请求会好吗?一个用于html,如果需要的话,之后的json?单一目的总是好的。可能需要多行代码和额外的ajax调用。但是谁知道。只是我的2cents。 –