在html视图中渲染JBuilder视图

时间:2013-01-22 13:31:25

标签: ruby-on-rails-3 json jbuilder

我用JBuilder创建了一个json视图。但是我想将它预加载到数据对象中,因此Backbone可以在早期访问数据而无需获取数据。

如何将list.json.jbuilder视图呈现到list.html.erb视图中?

通常没有jbuilder,我会做这样的事情:

<div data-list="<%= @contents.to_json %>"></div>

1 个答案:

答案 0 :(得分:18)

render,在视图中调用时,返回传递的模板或部分的字符串渲染;您可以根据需要将该字符串嵌入到视图中。请注意:

  • 您必须使用类型后缀/扩展名附加模板名称。如果不这样做,Rails可能会对您正在调用的模板文件感到困惑;即:它可能会选择list.html.erb而不是list.json.jbuilder。如果您从 list.html.erb进行此调用,则尝试呈现list.html.erb会导致无限递归和SystemStackError。使用:format的{​​{1}}选项似乎不起作用。
  • 您必须指定模板的限定路径;它不会找到“list.json”的正确模板,因为renderlist.json.jbuilder位于同一目录中。
  • 您需要通过list.html.erb传递render来电的输出;否则,当它嵌入视图时会被转义。

因此,对于您的示例,您可以写这个,假设您的模板位于raw

/app/views/foo