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