有些时候,我们需要返回带html片段的JSON数据,这个在rails中,可以通过如下两种方式:
方法一
def show
render json: {
status: 'ok',
html: render_to_string(partial: "/path/to/partial", locals: {})
}
end
render_to_string是Rails内建的方法,render方法是基于这个方法的,下图是Rails 的render stack
方法二
render json template
def show
end
# show.json.erb
{
metadata: <%= metadata%>, status: 'ok', html: <%= render partial: 'partial_name' %> }
同时Rails 返回JSON数据也是支持Layout的
app/views/layout/application.json.erb:
{ metadata: <%= metadata%>, status: 'ok', html: <%= yield %> }