我已经用JBuilder创建了一个json视图.但是我想将其预加载到数据对象中,所以Backbone可以早日访问数据,而无需获取数据.
如何将list.json.jbuilder视图呈现到list.html.erb视图中?
通常没有jbuilder,我会做这样的事情:
<div data-list="<%= @contents.to_json %>"></div>
解决方法
渲染,当从视图中调用时,返回传递的模板或部分的字符串渲染;您可以根据需要将该字符串嵌入到您的视图中.请注意:
>您必须使用后缀/扩展名附加您的模板名称.如果不这样做,Rails可能会困惑你正在调用的模板文件;即:它可能会选择list.html.erb而不是list.json.jbuilder.如果您从list.html.erb进行此调用,则尝试渲染list.html.erb导致无限递归和SystemStackError.使用:format的格式选项似乎不起作用.
>您必须指定模板的限定路径;因为list.json.jbuilder位于与list.html.erb相同的目录中,所以找不到“list.json”的正确模板.
>您需要通过raw传递render调用的输出;否则,当它嵌入到视图中时,它将被转义.
所以,举个例子,你可以写这个,假设你的模板在/ app / views / foo中:
<div data-list="<%= raw render(:template => "foo/list.json",:locals => { :contents => @contents }) %>"></div>