我用 JBuilder 创建了一个 json 视图。但我想将其预加载到数据对象中,因此 Backbone 可以尽早访问数据而无需获取它。
如何将 list.json.jbuilder 视图呈现到我的 list.html.erb 视图中?
通常没有jbuilder,我会做这样的事情:
<div data-list="<%= @contents.to_json %>"></div>
我用 JBuilder 创建了一个 json 视图。但我想将其预加载到数据对象中,因此 Backbone 可以尽早访问数据而无需获取它。
如何将 list.json.jbuilder 视图呈现到我的 list.html.erb 视图中?
通常没有jbuilder,我会做这样的事情:
<div data-list="<%= @contents.to_json %>"></div>
render
,当从视图中调用时,返回传递的模板或部分模板的字符串呈现;您可以根据需要将该字符串嵌入到您的视图中。请注意:
list.html.erb
而不是list.json.jbuilder
. 如果您从 list.html.erb
进行此调用,则尝试渲染list.html.erb
会导致无限递归和 SystemStackError。使用:format
选项render
似乎不起作用。list.json.jbuilder
位于同一目录中list.html.erb
。render
调用的输出。raw
否则,当它嵌入到视图中时,它将被转义。因此,对于您的示例,假设您的模板位于/app/views/foo
:
<div data-list="<%= raw render(:template => "foo/list.json", :locals => { :contents => @contents }) %>"></div>