ruby-on-rails-3 – 在html视图中渲染一个JBuilder视图

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – 在html视图中渲染一个JBuilder视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经用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>

猜你在找的Ruby相关文章